V každom projekte postupne vznikajú súbory, ktoré do repozitára vôbec nechceme dostať - zložka node_modules
s tisíckami súborov, skompilované .class alebo .exe súbory, nastavenia tvojho IDE, alebo dokonca súbor so
secret API kľúčom. Ak by sme spustili git add . bez rozmýšľania, všetky tieto súbory by sa nám ochotne pridali
do repozitára spolu s tými, ktoré tam skutočne patria.
Secret kľúč môže byť napríklad tvoj kľúč do ChatGPT API, kde ťa chargujú podľa množstva použitých tokenov. Akonáhle tvoj kľúč unikne, 10000 rusov bude non-stop tento kľúč používať a o mesiac ti príde faktúra na niekoľko stoviek tisíc. Až také drastické prípady som nezažil, ale odstavenie leaknutých kľúčov je skutočne pain in the ass.
.idea s tvojimi osobnými nastaveniami editoracmake-build-debug, ktorý sa dá kedykoľvek znova vygenerovať zo zdrojového kódu.env si uložíš prístupový kľúč k databázeAk by sa tieto súbory dostali do repozitára, kolega by ti pri git pull prepísal svoje vlastné nastavenia IDE,
repozitár by zbytočne narástol o súbory, ktoré sa dajú kedykoľvek znova vygenerovať, a čo je najhoršie - tvoj
tajný kľúč by sa dostal (často verejne) na GitHub.
.gitignoreDôležité:
.gitignoreje obyčajný textový súbor, v ktorom pomocou jednoduchých pravidiel (vzorov) povieme Gitu, ktoré súbory a priečinky má úplne ignorovať.
Súbor .gitignore sa zvyčajne umiestňuje do koreňového priečinka repozitára, teda tam, kde sa nachádza aj
priečinok .git.
.gitignore fungujeKaždý riadok v .gitignore predstavuje jeden vzor. Akonáhle sa nejaký súbor v repozitári zhoduje s niektorým
z týchto vzorov, Git ho prestane sledovať - nezobrazí sa v git status a ani git add . ho nepridá medzi
staged súbory. Ak ale súbor do .gitignore pridáš až potom, čo si zavolal git add ., Git ho neodstráni z
repozitára. Súbor musíš z gitu vypitvať sám.
Ukážkový obsah .gitignore súboru by mohol vyzerať takto:
# Zložka s knižnicami
node_modules/
# Skompilované súbory
build/
*.class
# Súbor špecifický pre operačný systém (macOS)
.DS_Store
# Citlivé údaje
.env
subor.txt - ignoruje konkrétny súbor s týmto názvom, kdekoľvek sa v repozitári nachádzapriecinok/ - lomítko na konci znamená, že ide o celý priečinok (spolu so všetkým, čo sa v ňom nachádza)*.log - hviezdička nahrádza ľubovoľný text, takto ignorujeme napríklad všetky súbory s príponou .log# komentár - riadok začínajúci znakom # je komentár a Git ho ignoruje!subor.txt - výkričník je výnimka - aj keď by súbor inak bol ignorovaný (napríklad kvôli vzoru vyššie),
tento konkrétny chceme naďalej sledovaťNote:
.gitignoreovplyvňuje iba súbory, ktoré Git ešte nesleduje (untracked). Ak už bol súbor predtým pridaný do repozitára (git add+git commit), pridanie do.gitignoreho automaticky neodstráni - na to existujú iné príkazy, ktorým sa budeme venovať neskôr.
Tip: Nemusíš vymýšľať
.gitignoreod nuly. Na stránke gitignore.io alebo v repozitári github/gitignore nájdeš hotové šablóny pre takmer každý programovací jazyk či nástroj (Java, Kotlin, Android, Node.js, …).