IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

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.

História COMMIT v gitu - Git

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.

Detail COMMIT v gitu - Git

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.


 

Predchádzajúci článok
Git - Základy - Dokončenie
Všetky články v sekcii
Git
Preskočiť článok
(neodporúčame)
Git - Skúmanie histórie
Článok pre vás napísal Patrik Valkovič
Avatar
Užívateľské hodnotenie:
1 hlasov
Věnuji se programování v C++ a C#. Kromě toho také programuji v PHP (Nette) a JavaScriptu (NodeJS).
Aktivity