Če ste že objavili kakšen projekt na Githubu, ste po vsej verjetnosti kdaj opazili v svojemu repositoryju datoteke, ki jih vi niste naredili oz. jih sploh niste videli pri sebi na računalniku. To so ponavadi neke začasne datoteke, ki so za delovanje programa v osnovi nepomembne, in jih generira programski jezik sam, ali pa vaš urejevalnik kode.
Na sliki je primer enega izmed mojih projektov na GitHubu pri kateremu sem uporabil Google App Engine (Python) ter urejevalnik kode PyCharm, ki sta mi pri tem generirala začasne datoteke, formata .pyc, ter mapo .idea. Format datotek oz. končnica se razlikuje glede na projekt, na uporabljen IDE in programski jezik.
Ker so vse te datoteke in mapa totalno nepotrebni, jih bom odstranil tako, da se mi tudi v prihodnje ne bodo na novo ustvarile. Kako?
Ta projekt je bil nazadnje posodobljen pred 9 meseci (pravzaprav sem naredil samo en commit, ko je bil projekt že dokončan), zato sem si ga moral na novo klonirati na računalnik. Takoj sem opazil, da mi je zraven naložil še vse te nepotrebne datoteke. Lahko jih izbrišem in se jih tako znebim, ampak problem je, da bom pri naslednjem ‘git clone’ ali ‘git pull’ vse te datoteke dobil nazaj, ker se bodo vedno na novo generirale, tako da to ni dobra rešitev.
Prava rešitev je, da znotraj mape ustvarim ‘.gitignore’ datoteko. Pazite, da vam ne generira .txt datoteke ali kaj podobnega – datoteka sme biti imenovana samo ‘.gitignore‘ in nič drugega, drugače ne bo delovalo.
Znotraj te datoteke lahko zapišemo specifične datoteke, ki jih hočemo ignorirati- torej v osnovi ‘ime_datoteke.format‘.
Lahko pa ignoriramo vse datoteke nekega podatkovnega formata- primer: *.format (zvezdica pomeni vse oz. vsa možna imena).
V tem primeru se hočem znebiti vseh .pyc datotek in specifično, cele mape .idea, zato bom zapisal v datoteko .gitignore takole:
Shranim spremembe v datoteki in še preden naredim git push
, v Terminalu zaženem ukaz git rm -r --cached .
, ki bo resetiral ‘stanje’ datotek v mapi, kot da bi ustvarili čisto nov projekt – torej ne bo si zapomnil, da smo kadarkoli prej commitali te nepotrebne datoteke brez .gitignore-a.
Šele potem naredim vse te tipične git ukaze: add
, commit
in push
.
In če zdaj pogledam na GitHubu svoj repository, bom opazil, da so vse deklarirane datoteke bile ignorirane in niso uploadane na GitHub.