3. díl - Git - Základy

Software Git Git - Základy

V minulém dílu našeho seriálu tutoriálu o Gitu jsme se věnovali instalaci a tvorbě repositáře. Dnes se podíváme na základní práci s Gitem. Projdeme práci se soubory a procházení historie. Máte se určitě na co těšit. Budeme pracovat s repositářem Gitu, který jste si stáhli v minulém díle.

Commity

Commit je základní stavební jednotka. Commitem označíme místo, které si chceme zapamatovat pro pozdější použití, například protože je klíčové. Obsahuje snapshot všech souborů, které jsou v repositáři nebo souborů, které jsme přidali. Kromě toho Commit obsahuje informaci o tom kdo a kdy jej vytvořil. Vedle toho Git pro každý commit generuje hash, který jednoznačně identifikuje každý commit. Pojďme se podívat na malou ukázku. Při otevření repositáře v Git GUI pod výběrem „Repository -> Visualize Master’s history“ se nám zobrazí graf commitů Gitu.

Historie commitů v Gitu

Vlevo je graficky znázorněný postup commitů po sobě. Rozdvojení probíhá ve větvích (viz další kapitoly). Vpravo od grafu je napsána zpráva ke commitu, která popisuje změny od minula. V prostředním sloupečku je poté vypsáno jméno autora a jeho email. Právě proto jsme v minulém díle nastavovali uživatelské jméno a heslo. V posledním sloupečku je čas, kdy byl commit proveden. Všimněte si, že není nutné mít commity časově po sobě. Je commit 8.8.2014, poté 8.7.2014, poté 3.8.2014 a teprve po spojení je commit 10.8.2014. Samozřejmě, že spojení dvou větví musí proběhnout až po commitech v jednotlivých větvích, ale práce na jednotlivých větvích může probíhat naprosto nelineárně.

Detail commitu v Gitu

Po rozkliknutí commitu vidíme ve spodní části jeho hash (SHA1 ID). Tento hash jej konkrétně identifikuje. Chceme-li se dostat na tento commit, použijeme právě tento hash. Kromě toho také vidíme hash rodičovských commitů (protože jsem vzal commit, který spojoval dvě větve) a hash dalšího commitu v řadě. Na posledním řádku je uvedeno do které větve tento commit patří.

Přidání souborů

Abychom vytvořili nové nebo upravili stejné soubory a poté je dostali do commitu, potřebujeme je nejprve dostat do stage. Zapneme si Git Bash ve složce, kam jsme si stáhli Git. Poté zavoláme příkaz git status. Zaznamenáte následující výstup:

On branch master
Your branch is up-to-date with ‘origin/master’.
Nothing to commit, working direktory clean

Git nám hlásí, že nenalezl žádné změny v adresáři. Není divu, ještě jsme nic neprovedli. Co se tedy stane, když přidáme soubor „myFile.txt“? Opět 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 říká, že stále nemá co vložit do commitu, ale nalezl nesledované soubory. Zároveň nám tyto soubory vypsal a poradil nám, co máme udělat, abychom je dostali do commitu. Nesledované soubory jsou to proto, protože ještě nejsou v žádném commitu a Git nemá tedy vytvořený jejich snapshot. Použijeme nabízené git add myFile.txt a opět se podíváme 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 jsou změny, které budou commitnuty. Jedná se o akci přidání nového souboru (new file) s názvem „myFile.txt“. Pojďme jej tedy dát do commitu. K tomu slouží příkaz git commit (překvapivě :-) ). Teď máme dvě možnosti, buď můžeme použít pouze git commit a zobrazí se nám editor, ve které máme editovat popis. Defaultně se popis otevírá v příkazové řádce, abychom to změnili, musíme změnit config. Jak jsme to již dělali, nastavíme si tentokrát core.editor na váš oblíbený editor. Více informací zde. Druhá možnost je použít atribut -m a za něj napsat zprávu. Takže náš příkaz bude vypadat 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 jsme vytvořili commit. Teď jej naleznete v historii commitů. Gratuluji, právě jste přispěli na vývoj Gitu :-). Pokud se chcete podívat na poslední commit, používá se na to příkaz git show, který opět vypíše autora, čas, zprávu a změny, které byly v commitu provedeny.

Editace

Nyní si pojďme soubor editovat. Do souboru napíšeme například „Hello World“ a podíváme se, co 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 soubor myFile.txt byl změněn. Opět tedy použijeme git add myFile.txt a přidáme soubor do stage. I když je soubor již v repositáři, změny nebudou uloženy dokud jej nepřidáte do stage.

Několik rad na závěr

Abychom nemuseli přidávat všechny soubory po jednom, existuje několik věcí, které nám pomohou zjednodušit práci.

Příkaz git add přijímá jako parametr hvězdičku, kterou známe z příkazové řádky. Je tedy možné například přidat všechny HTML soubory (git add *.html) nebo všechny PHP skripty končící slovem Presenter (git add *Presenter.php). Pro přidání všech souborů napíšeme jako parametr hvězdičku (git add *). Tím přidáme všechny soubory. Tomuto mezikroku se můžeme vyhnout a zavolat rovnou commit s atributem –a (git commit –a), který uloží aktuální složku jak je. Tedy odstraní smazané soubory a aktualizuje nové nebo editované.

O popisu commitů bylo sepsáno již hodně, proto vás pouze přesměruji na některé jiné zdroje.

Ještě by bylo dobré podotknout, že některé servery používají první řádek popisu jako nadpis emailu. Maily se posílají majitelům repositáře, který váš commit poté povolí nebo zakáže. Proto se snažte na první řádek uvést co nejstručněji akci, kterou jste provedli a teprve na dalších řádcích to trochu rozvést. Také se nedoporučuje mít zprávu delší jak 50 znaků.

To by pro dnešek bylo vše, příště se podíváme trochu do historie a budeme porovnávat jednotlivé verze mezi sebou.


 

  Aktivity (1)

Článek pro vás napsal patrik.valkovic
Avatar
Věnuji se programování v C++ a C#. Kromě toho také programuji v PHP (Nette) a JavaScriptu.

Jak se ti líbí článek?
Celkem (8 hlasů) :
55555


 


Miniatura
Všechny články v sekci
Git
Miniatura
Následující článek
Git - Zkoumání historie

 

 

Komentáře

Avatar
Dominik Gavrecký:

I když je soubor již v repositáři, změny nebudou uloženy dokud jej nepřidáte do stage.

Čo tým myslíš pridáte do STAGE ? Prípadne ako to spravím ?

Odpovědět 27.12.2015 23:43
Hlupák nie je ten kto niečo nevie, hlupákom sa stávaš v momente keď sa na to bojíš opýtať.
Avatar
Dominik Gavrecký:

Pretože ak postupujem tak ako píšeš na gite sa mi súbor neaktualizuje.

Odpovědět 28.12.2015 0:08
Hlupák nie je ten kto niečo nevie, hlupákom sa stávaš v momente keď sa na to bojíš opýtať.
Avatar
Odpovídá na Dominik Gavrecký
Štefan Pružinský:

Skús použiť git add myFile.txt, malo by to takto fungovať. :)

Odpovědět  +1 28.12.2015 10:34
Najefektívnejším spôsobom debuggingu je modlitba. :)
Avatar
Neaktivní uživatel:

Ahoj.
Mohli by ste mi pomôcť. Kde podľa priloženého obrázku v GIT GUI nájdem
„Repository -> Visualize Master’s history“ ???

Odpovědět 30. ledna 19:57
Neaktivní uživatelský účet
Avatar
patrik.valkovic
Šéfredaktor
Avatar
Odpovídá na Neaktivní uživatel
patrik.valkovic:

První musíš mít otevřený repositář. Buď z někama kklonovat, nebo vytvořit vlastní. Potom, když to otevřeš v GitGUI, tak tam nabídka bude.

Odpovědět 30. ledna 20:11
Nikdy neumíme dost na to, abychom se nemohli něco nového naučit.
Avatar
Odpovídá na patrik.valkovic
Neaktivní uživatel:

OK . Ďakujem za rýchlu odpoveď. Odskúšam to..

Odpovědět 30. ledna 20:12
Neaktivní uživatelský účet
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 6 zpráv z 6.