PHPPamokos.lt


12. Kitos populiaresnės komandos: "stash", "tag", "alias"

Ką gi, aptarėme pagrindines Git komandas, atėjo laiko aptarti mažiau naudojamas, bet taip pat naudingas.


Padedame pakeitimus į šalį - git stash

Būna ir tokių situacijų: sėdi, kažką rašai kode, ir staiga kažkas pribėga ir sako: "Žiūrėk, reikia staigiai pataisyti klaidą, ir dabar pat paleisti gyvai". Tai kas tada gaunasi - jūs tik įpusėjote dabartinį darbą, ir dar nenorite jo niekur kelti į repozitoriją, bet jums staigiai reikia įkelti kažkokį neplanuotą kodo gabalą. Čia padės komanda git stash.

Iš esmės, ši komanda padaro dabartinių jūsų pakeitimų kopiją ir "padeda į stalčių tam kartui", ir repozitorijos būsena tampa "švari", tarsi jokių pakeitimų nebuvote dar padarę. Tuomet galite pataisyti tai ką reikia staigiai, įkelti į repozitoriją, o vėliau pasiimti tuos pakeistus failus iš stash kopijos, ir pratęsti nebaigtą darbą.

Štai kaip tai atrodo praktikoje. Sakykime, kad dirbame ties kažkokiu svarbiu index.php failo pakeitimu ir tada mums ateina ir pasako - "pakeisk config.php failą staigiai". Tada per Git Bash viskas atrodo taip:

Kaip ir matote iš užrašo, buvo sukurta "stash" kopija, tai dabar status parodys "švarią" repozitoriją, tarsi su index.php nieko nebuvo daryta.

Ir tada jūs atliekate visus norimus veiksmus su config.php failu, jam ramiai padarote commit ir push, o tada reikia nukopijuoti pakeitimus iš "stash" kopijos atgal į "working copy", kad pratęstume darbus. Tai daroma su komanda git stash apply:

Ir tada, kaip matote, repozitorijos statusas tampa toks, kad index.php failas vėl pripažįstamas kaip pakeistas.

Štai toks pagalbininkas, norint pakeitimus "trumpam padėti į šalį".


Pakeitimų versijos - git tag

Taip pat Git sistema siūlo ir "užtaginti" savo kodo pakeitimų versijas. Sakykime, po kažkiek commit pakeitimų jūs norite užfiksuoti, kad dabartinė versija yra v0.1. Tam skirta komanda git tag. Be parametrų ji tiesiog parodo tagų sąrašą, o su parametrais jau atlieka kitus veiksmus.

Git turi dviejų tipų tag'us - lightweight ir annotated. Realybėje mus domina pastarieji, nes būtent su jais išsaugoma pilna informacija. Tai sukurti tagą esamai repozitorijos būsenai skirta komanda git tag -a [versija] -m "[aprašymas]":

Ir, kaip matote, tada komanda git tag mums duoda sąrašą tag'ų (kol kas iš vieno elemento).

Ir tada mes galime pasižiūrėti, prie kokio commit yra "pririšta" tam tikra versija - tam skirta komanda git show:

Mums rodomas ne tik konkretus commit su jo autoriumi ir aprašymu, bet ir jo konkretus pakeitimas konkrečiame faile. Negi nesmagu?

Taip pat galime įkelti savo versijas į GitHub su git push, bet atkreipkite dėmesį, kad su paprastu push tag'ai nėra perkeliami, reikia specialiai atlikti git push origin --tags:

Ir tada per GitHub matome mūsų versiją:



Trumpiname komandas - alias

Yra ir galimybė priskirti įprastoms Git komandoms savo vardus. Sakykime, jei nenorite rašyti git commit o norite trumpiau - tai galite sukurti komandos vardą co ir tada rašysite git co. Tam skirti alias nustatymai.

Su config komanda įrašome savo naujų komandų reikšmes į globalią konfigūraciją, štai taip:
git config --global alias.co commit
git config --global alias.st status
Ir nuo šiol vietoje git commit galite rašyti git co, o vietoje git status - tiesiog git st.

Dar vienas ypatumas yra tai, kad naujoms komandoms galima priskirti ne tik senųjų komandų pavadinimus, bet ir bet kokias tekstines eilutes - sakykime, jei matote, kad jūsų komandose dažnai pasikartoja kažkokia komandų ir raktų seka, tai galite jai priskirti pavadinimą ateities panaudojimams.
git config --global alias.master 'checkout master'
Ir nuo šiol komanda git master atliks tą patį kaip ir git checkout master.


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