PHPPamokos.lt


4. Komanda "git commit"

Atėjo laikas susipažinti su bene svarbiausia komanda - git commit. Iš principo, ji reiškia "išsaugokime savo pakeitimų porciją". Praeitoje pamokoje apžvelgta git add komanda tik perkelia failus į tarpinę "staging area", o commit ir perkelia visą "staging area" turinį jau į repozitoriją. Na, bet apie viską iš eilės.


Registruojame savo parametrus - git config

Pirmiausia reikia informuoti Git sistemą, kas per žmogus atliks visus pakeitimus sistemoje - nes kiekvienas pakeitimas turi būti susietas su kažkokiu vardu ir el.pašto adresu.

Tam tikslui yra komanda git config. Ji turi daug parametrų, bet šiame etape mums užtenka dviejų pagrindinių - mano minėtų vardo ir elektroninio pašto. Taigi, vieną kartą nustatome juos:
git config --global user.name "Povilas PHPPamokos.lt"<br />
git config --global user.email povilas@phppamokos.lt
Turbūt jums kyla klausimus, kokį vardą ir el.paštą čia įrašyti? Būtent šis vardas bus rodomas istorijoje, kur galima bus peržiūrėti kas kokius pakeitimus padarė. Taigi, rašykite tokį, kad ir jūs ir kolegos suprastų kad čia būtent jūs. O el.paštas turėtų sutapti su tuo adresu, kurį naudojate (ar naudosite) versijų kontrolės sistemose kaip GitHub ar Bitbucket - apie jas kalbėsime vėliau. Jei ten dar neturite vartotojo, nenusiminkite - dabar įrašykite bet kokį savo el.pašto adresą, vėliau šią konfigūraciją galima bus pakeisti.

O jei kada norėsite patikrinti savo konfigūracijos parametrus, tam skirta tokia komanda:
git config --list


Git commit procesas

Na ir dabar bandome "commitinti" - iš praeitos pamokos turime tris failus, kurie laukia perkėlimo į repozitoriją, tai tą ir padarykime.

Labai svarbu: kiekvienas "commit'as" turi turėti aiškią paskirtį, kurią patys aprašysite per taip vadinamą "commit message" - jis bus matomas vėliau tiek jums žiūrint istoriją, tiek ir kitiems kolegoms jei jie turės prieigą. Taigi, apgalvokite, ką parašyti, kad visiems būtų suprantama ir po mėnesio, ir po metų. Na, bet mūsų paprastu atveju ta žinutė gali būti paprasta - "First files of the project".

Taigi, komanda atrodo taip:
git commit -m "First files of the project"

Kaip matote, parametras -m (nuo žodžio "message") po savęs turi patį žinutės tekstą tarp kabučių.
Pastaba. Žinutės gali būti rašomos ir lietuvių kalba, bet žvelgiant bendrai į programavimo praktiką, geriau priprasti viską rašyti angliškai, nes niekada nežinai kada projektas bus pvz parduotas užsienio kompanijai, arba į darbą bus priimtas dirbti kolega iš svetur.
Taigi, kas įvyksta, įvykdžius komandą commit? Pakeitimai "nuvažiuoja" į repozitoriją, čia beveik kaip kokiame Microsoft Office spausti File -> Save.


Kas būtent perkeliama į repozitoriją su commit?

Svarbu suprasti, kokie būtent failai yra išsaugomi į repozitoriją - tik tie, kurie buvo pridėti į "staging area" su komanda git add. Pademonstruosiu pavyzdžiu.

Sakykime, kad pamodifikavome failą config.php, tada pridėkime jį į "staging area":

Ir dabar dar pakoreguojame kokį nors kitą failą - sakykime, index.php, ir žiūrime ką mums rodo git status:

Kaip matome, yra dvi skiltys - vienas failas config.php yra paruoštas "kommitinimui", o kito index.php pakeitimai yra neužfiksuoti ir neperkelti į "staging area":

Ir svarbu suprasti, kad jei dabar įvykdysime git commit, tai į repozitoriją bus perkeltas TIK "staging area" turinys, t.y. mūsų atveju tik config.php failas:

Kaip matote, index.php failas vis dar išliko neperkeltas niekur iš mūsų "working copy" - ir taip bus tol, kol nepadarysime jam git add.


Kaip "praleisti" add komandą?

Yra viena gudrybė - jei jums nesinori naudoti "staging area" išvis ir norite iškart kelti visus savo pakeitimus į repozitoriją, komanda commit turi dar vieną pagalbinį raktą -a, kuris padaro git add . visiems failams prieš commit įvykdymą.

Šiuo atveju jau ir mūsų iki tol neperkeltas index.php failas bus automatiškai ir įkeltas į "staging area", ir iškart perkeltas į repozitoriją.


Failų pašalinimas - git rm

Būna kad reikia ne tik pridėti naują failą, bet ir jį pašalinti iš repozitorijos. Taip ir padarykime - iš savo katalogo ištrinkime failą header.php ir paleiskime git status:

Kaip matote, Git užfiksavo kad failas ištrintas, ir mums rodo kad jį reikia pašalinti. Net nurodo, kokią komandą tam reikėtų atlikti - git rm (nuo žodžio "remove"). Ji veikia analogišku principu kaip ir git add - galima po jos nurodyti konkretų failą, kurį norime pašalinti, arba padėti tašką ir bus užfiksuoti visi ištrinti failai.

Atkreipkite dėmesį, kad po git rm vis tiek reikia atlikti git commit - tik tada pakeitimai suvažiuos į repozitoriją ir ten bus užfiksuota kad header.php failo nebėra.

Taip pat svarbu: failas fiziškai nėra trinamas iš repozitorijos, ir jei reikės jį atstatyti - galima bus grįžti prie praeitos repozitorijos versijos, tai ir yra vienas iš didžiausių versijų kontrolės privalumų.


Žiūrime pakeitimų istoriją - git log

Dar viena svarbi komanda skirta patikrinti, kokie gi pakeitimai buvo atlikti - įrašome git log ir pamatysime visą "commit'ų" sąrašą, pradedant nuo naujausio:

Atkreipkite dėmesį, kad čia jau vaizduos jūsų vardą ir el.pašto adresą - būtent tą, kurį įrašėte į konfigūraciją šios pamokos pradžioje.

Taip pat galima pridėti įvairių parametrų, norint log'ą peržiūrėti patogiau - pakeisti rūšiavimo tvarką, rodyti suspaustu formatu ir t.t. Visus parametrus galite peržiūrėti oficialioje dokumentacijoje.


Add ir commit apibendrinimas

Taigi, taip ir vyksta nuolatinis darbas su Git - padarote pakeitimus, ir karts nuo karto paleidžiate add bei commit komandas. Kad geriau suprastumėte, galite palyginti su Microsoft Office programomis add būtų kai Office pats automatiškai išsaugo pakeitimus kas kažkiek laiko, o commit - kai jau jūs spaudžiate CTRL+S failo naujausios versijos išsaugojimui. Kažkas panašaus.


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