4. diel - Git - Základy
V minulej lekcii, Git - Základy - Dokončenie , sme si vyskúšali tvorbu commitu s dlhším
popisom. Naučili sme sa tiež naklonovať cudzí repositár a používať
súbor .gitignore
.
V minulom dieli nášho seriálu tutoriálu o GITU sme sa venovali inštaláciu a tvorbe repozitára. Dnes sa pozrieme na základnú prácu s Gite. Prejdeme prácu so súbormi a prehliadania histórie. Máte sa určite na čo tešiť. Budeme pracovať s repozitára gitu, ktorý ste si stiahli v minulom diele.
COMMIT
Commit je základná stavebná jednotka. Commit označíme miesto, ktoré si chceme zapamätať na neskoršie použitie, napríklad pretože je kľúčové. Obsahuje snapshot všetkých súborov, ktoré sú v úložisku alebo súborov, ktoré sme pridali. Okrem toho Commit obsahuje informáciu o tom kto a kedy ho vytvoril. Popri tom Git pre každý commit generuje hash, ktorý jednoznačne identifikuje každý commit. Poďme sa pozrieť na malú ukážku. Pri otvorení repozitára v Git GUI pod výberom "Repository -> Visualize Master 's history" sa nám zobrazí graf COMMIT gitu.
Vľavo je graficky znázornený postup COMMIT po sebe. Rozdvojenie prebieha vo vetvách (pozri ďalšie kapitoly). Vpravo od grafu je napísaná správa ku commit, ktorá popisuje zmeny od minula. V prostrednom stĺpci je potom vypísané meno autora a jeho email. Práve preto sme v minulom diele nastavovali užívateľské meno a heslo. V poslednom stĺpci je čas, kedy bol commit vykonaný. Všimnite si, že nie je nutné mať COMMIT časovo po sebe. Je commit 8.8.2014, potom 8.7.2014, potom 3.8.2014 a až po spojení je commit 10.8.2014. Samozrejme, že spojenie dvoch vetiev musí prebehnúť až po COMMIT v jednotlivých vetvách, ale práca na jednotlivých vetvách môže prebiehať úplne nelineárne.
Po rozkliknutí COMMIT vidíme v spodnej časti jeho hash (SHA1 ID). Tento hash ho konkrétne identifikuje. Ak sa chceme dostať na tento commit, použijeme práve tento hash. Okrem toho tiež vidíme hash rodičovských COMMIT (pretože som vzal commit, ktorý spájal dve vetvy) a hash ďalšieho COMMIT v rade. Na poslednom riadku je uvedené do ktorej vetvy tento commit patrí.
Pridanie súborov
Aby sme vytvorili nové alebo upravili rovnaké súbory a potom ich dostali do commit, potrebujeme je najprv dostať do stage. Zapneme si Git Bash v priečinku, kam sme si stiahli Git. Potom zavoláme príkaz git status. Zaznamenáte nasledujúci výstup:
On branch master Your branch is up-to-date with ‘origin/master’. Nothing to commit, working direktory clean
Git nám hlási, že nenašiel žiadne zmeny v adresári.
Niet divu, ešte sme nič neurobili. Čo sa teda stane, keď pridáme súbor
myFile.txt
? Opäť použijeme git status
.
On branch master Your branch is up-to-date with 'origin/master'. Untracked files: (use "git add <file>..." to include in what will be committed) myFile.txt nothing added to commit but untracked files present (use "git add" to track)
Git nám hovorí, že stále nemá čo vložiť do commit, ale našiel nesledované súbory. Zároveň nám tieto súbory vypísal a poradil nám, čo máme urobiť, aby sme ich dostali do COMMIT. Nesledované súbory sú to preto, lebo ešte nie sú v žiadnom COMMIT a Git nemá teda vytvorený ich snapshot. Použijeme ponúkané git add myfile.txt a opäť sa pozrieme na git status.
On branch master Your branch is up-to-date with 'origin/master'. Changes to be committed: (use "git reset HEAD <file>..." to unstage) new file: myFile.txt
Commit
Tentokrát nám Git oznámil, že tu sú zmeny, ktoré budú
commitnuty. Jedná sa o akcii pridanie nového súboru (new file) s
názvom myFile.txt
. Poďme ho teda dať do COMMIT. K tomu slúži
príkaz git commit (prekvapivo ). Teraz máme dve možnosti, buď môžeme použiť iba git
commit a zobrazí sa nám editor, v ktorej máme editovať popis. Defaultne
sa opis otvára v príkazovom riadku, aby sme to zmenili, musíme zmeniť
config. Ako sme to už robili, nastavíme si tentokrát core.editor na váš
obľúbený editor. Viac informácií tu.
Druhá možnosť je použiť atribút -MA za neho napísať správu. Takže
náš príkaz bude vyzerať git commit -m "Muj první commit"
.
[master 8948f77] Muj prvni commit 1 file changed, 0 insertions(0), 0 deletions(-) Create mode 100644 myFile.txt
Tým sme vytvorili commit. Teraz ho nájdete v histórii COMMIT. Gratulujem, práve ste prispeli na vývoj gitu . Ak sa chcete pozrieť na poslednú commit, používa sa na to príkaz git show, ktorý opäť vypíše autora, čas, správu a zmeny, ktoré boli v COMMIT vykonané.
Editácia
Teraz si poďme súbor editovať. Do súboru napíšeme napríklad "Hello World" a pozrieme sa, čo nám vypíše git status.
On branch master Your branch is ahead of 'origin/master' by 1 commits. (use "git push" to publish your local commits) Changes not staged for commit: (use "git add <file>..." to update what will be committed) (use "git checkout -- <file>..." to discard changes in working directory) modified: myFile.txt no changes added to commit (use "git add" and/or "git commit -a")
Tentokrát nám Git ohlásil, že súbor myfile.txt bol zmenený. Opäť teda použijeme git add myfile.txt a pridáme súbor do stage. Aj keď je súbor už v úložisku, zmeny nebudú uložené kým ho nepridáte do stage.
Niekoľko rád na záver
Aby sme nemuseli pridávať všetky súbory po jednom, existuje niekoľko vecí, ktoré nám pomôžu zjednodušiť prácu.
Príkaz git add prijíma ako parameter hviezdičku, ktorú poznáme z príkazového riadku. Je teda možné napríklad pridať všetky HTML súbory (git add * .html) alebo všetky PHP skripty končiaci slovom Presenter (git add * Presenter.php). Pre pridanie všetkých súborov napíšeme ako parameter hviezdičku (git add ). Tým pridáme všetky súbory. Tomuto medzikroku sa môžeme vyhnúť a zavolať rovno commit s atribútom -a *(git commit -a), ktorý uloží aktuálny zložku ako je. Teda odstráni zmazané súbory a aktualizuje nové alebo editované.
O popisu COMMIT bolo spísané už veľa, preto vás len presmerujem na niektoré iné zdroje.
Ešte by bolo dobré podotknúť, že niektoré servery používajú prvý riadok popisu ako nadpis emailu. Maily sa posielajú majiteľom repozitára, ktorý váš commit potom povolí alebo zakáže. Preto sa snažte na prvý riadok uviesť čo najstručnejšie akciu, ktorú ste vykonali a až na ďalších riadkoch to trochu rozviesť. Tiež sa neodporúča mať správu dlhšiu ako 50 znakov.
To by pre dnešok bolo všetko, nabudúce sa pozrieme trochu do histórie a budeme porovnávať jednotlivé verzie medzi sebou.