PHPPamokos.lt


13. Failas .gitignore

Repozitorijos skirtos kodo saugojimui. Bet juk realiuose projektuose ten būna ne tik kodas, o visokie front-end dalykai (paveiksliukai, šriftai) ar nustatymų failai. Juk repozitorijos svoris nuo to išsipūčia, o ir ne viską apsimoka saugoti repozitorijoje. Tą išspręsti padės "stebuklingas" failiukas .gitignore.

Veikia jis labai paprastai: savo lokalios repozitorijos pagrindiniame kataloge susikurkite jį kaip paprastą tekstinį failą, ir taip ir pavadinkite - .gitignore (atkreipkite dėmesį į tašką priekyje - čia gaunasi failas be pavadinimo ir su gitignore plėtiniu, kad tikrai su niekuo nesupainiotumėte).

Tame faile tiesiog eilutė po eilutės reikia surašyti, kurių failų ar katalogų nesaugoti repozitorijoje. Kai darysite add, commit ir push komandas, tie jūsų nurodyti failai ir katalogai bus tiesiog ignoruojami, tarsi jie nedalyvauja Git sistemoje.

Galima nurodyti ir konkrečius failus, ir jų sąrašus, pasitelkiant žvaigždutės simbolį (*). Štai tipinis .gitignore failo turinys iš Laravel framework sistemos:
/vendor
/node_modules
Homestead.yaml
Homestead.json
.env
Kaip matote, yra ignoruojami ir ištisi katalogai (tada ignoruojami ir visi juose esantys failai ir pakatalogiai), o taip pat ir atskiri failai kaip homestead.json. Šiuo Laravel atveju būtent tie failai yra pasirinkti dėl dviejų priežasčių:
  • /vendor ir /node_modules katalogai savyje turi trečiųjų šalių kodą, kuris bus nuolat keičiamas su composer ir kitomis komandomis, ir tai iš esmės nėra mūsų kodas, nėra mūsų repozitorijos dalis. Taip pat jis užima labai daug vietos - kiek pamenu, "švaraus" Laravel atveju /vendor katalogas užima keliasdešimt megabaitų. O kuo daugiau reikia saugoti repozitorijoje, tuo atitinkamai lėčiau vyks visi Git procesai, nes sistemai tada reikia pertikrinti ir sulyginti daugiau failų.
  • Kita priežastis - failų .env ir kitų atvejais - juose saugomi nustatymai: prisijungimai prie duomenų bazės, slaptažodžiai ir kiti svarbūs dalykai, kurie ne tik kad skirsis nuo kiekvienos aplinkos (skirtingame serveryje ar lokaliame kompiuteryje), bet ir yra "jautrūs" duomenys - nevalia jų saugoti kažkur viešai GitHub (ypač jei repozitorija yra "public")
Taip pat, kaip sakiau, galite ignoruoti tam tikrus failus ar katalogus su žvaigždute:
*.css
styles/*
Kai kurios repozitorijos yra jau saugomos su savo .gitignore failiukais - kai darysite git clone, jie jau ten bus, kaip pavyzdys tas pats Laravel. Bet jei kuriate savo projektą, tai reikia iš esmės kuo anksčiau nuspręsti, kurie failai bus ignoruojami, geriausia išvis prieš pat pirmąjį git push, nes tada tie failai niekada nepateks į repozitoriją, tarsi jų ir nebuvo. O jeigu jie bent kartą buvo "supushinti", tada jau visa .gitignore prasmė nueina šuniui ant uodegos - failai jau repozitorijoje.

Štai tiek trumpai apie atskirų failų ignoravimą iš repozitorijos.


(c) 2015-2018. Visais klausimais kreipkitės povilas@laraveldaily.com