3. díl - Git - Základy

Software Git Git - Základy

Unicorn College ONEbit hosting Tento obsah je dostupný zdarma v rámci projektu IT lidem. Vydávání, hosting a aktualizace umožňují jeho sponzoři.

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.


 

 

Článek pro vás napsal patrik.valkovic
Avatar
Jak se ti líbí článek?
10 hlasů
Věnuji se programování v C++ a C#. Kromě toho také programuji v PHP (Nette) a JavaScriptu (NodeJS).
Miniatura
Všechny články v sekci
Git
Miniatura
Následující článek
Git - Zkoumání historie
Aktivity (1)

 

 

Komentáře
Zobrazit starší komentáře (1)

Avatar
Dominik Gavrecký:28.12.2015 0:08

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ý:28.12.2015 10:34

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:30.1.2016 19:57

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.1.2016 19:57
Neaktivní uživatelský účet
Avatar
patrik.valkovic
Šéfredaktor
Avatar
Odpovídá na Neaktivní uživatel
patrik.valkovic:30.1.2016 20:11

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.1.2016 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:30.1.2016 20:12

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

Odpovědět 30.1.2016 20:12
Neaktivní uživatelský účet
Avatar
Garrom Orc Shaman:23. března 19:49

Zdravím. Děkuji za kvalitní návod jen mám jednu otázku. Když vytvořím repositář ze složky projektu (viz. obrázek) kde jsou uloženy commity ?

-Garrom

Odpovědět 23. března 19:49
We're orcs, maybe we are not always wise or beautiful, but we will always be strong, outnumbered and well armed
Avatar
Atrament
Člen
Avatar
Odpovídá na Garrom Orc Shaman
Atrament:23. března 20:59

Všechno je v tom adresáři .git

 
Odpovědět  +1 23. března 20:59
Avatar
Odpovídá na Atrament
Garrom Orc Shaman:24. března 11:59

Ok, díky

Odpovědět 24. března 11:59
We're orcs, maybe we are not always wise or beautiful, but we will always be strong, outnumbered and well armed
Avatar
jAkErCZ
Člen
Avatar
jAkErCZ:10. dubna 10:27

Proč když chci přidat popis ke commitu mi to háže tyto errory?

"Chyba": https://ctrlv.cz/kgYe

díky všem :)

Odpovědět 10. dubna 10:27
Pokud něčeho chceš dosáhnout, musíš si za tím jít.
Avatar
Honza Bittner
Šupák
Avatar
Odpovídá na jAkErCZ
Honza Bittner:10. dubna 10:36

Protože tam píšeš nějaké divné (české) uvozovky. V programování obecně existují jen 2 typy: ' apostrof a " uvozovka.

Takže napiš

git commit -m "Prvni verze"

a půjde ti to

Odpovědět  +2 10. dubna 10:36
Milovník Dartu. Student FIT ČVUT. Sleduj mě na https://twitter.com/tenhobi a zeptat se mě na cokoli můžeš na https://...
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 10 zpráv z 11. Zobrazit vše