Co je Git a jak funguje? Srozumitelný návod pro začátečníky

Git dnes používá prakticky každý vývojář na světě. Pokud s programováním nebo tvorbou webů začínáte, dříve nebo později na něj narazíte. V tomto návodu vám srozumitelně vysvětlím, co je Git, jak funguje uvnitř a které příkazy budete používat každý den.

Co je Git: verzovací systém jednou větou

Git je distribuovaný verzovací systém. Za tím krkolomným názvem se skrývá jednoduchá myšlenka: Git si pamatuje kompletní historii změn ve vašem projektu. Kdykoliv se můžete vrátit ke stavu z minulého týdne, porovnat dvě verze souboru nebo zjistit, kdo a kdy konkrétní řádek napsal.

Slovo "distribuovaný" znamená, že každý vývojář má u sebe kompletní kopii celé historie projektu. Server jako GitHub je jen jedna z kopií, na které se tým domluvil jako na centrální.

Git není GitHub. Git je nástroj běžící na vašem počítači, GitHub je webová služba, kde Git repozitáře hostujete a sdílíte. Alternativy GitHubu jsou třeba GitLab nebo Bitbucket.

Jak Git funguje uvnitř: snímky, ne rozdíly

Klíč k pochopení Gitu: neukládá "co se změnilo", ale kompletní snímek (snapshot) projektu při každém uložení. Soubory, které se nezměnily, chytře neukládá znovu, jen na ně odkazuje. Proto je Git extrémně rychlý.

Každé takové uložení se nazývá commit. Commit obsahuje:

  • unikátní identifikátor (SHA hash, např. a3f8c21)
  • odkaz na předchozí commit, čímž vzniká řetěz historie
  • autora, datum a popisnou zprávu
  • snímek celého projektu

Tři stavy souboru: working directory, staging, repozitář

Každá změna v Gitu prochází třemi oblastmi:

  1. Working directory: vaše pracovní složka, kde soubory upravujete
  2. Staging area: připravovací prostor, kam příkazem git add vybíráte, co půjde do příštího commitu
  3. Repozitář: trvale uložená historie, kam změny zapíše git commit

K čemu je staging area dobrá? Umožňuje commitnout jen část změn. Upravíte pět souborů, ale do commitu dáte jen dva, které spolu logicky souvisí. Výsledkem jsou malé, přehledné commity, ve kterých se po půl roce vyznáte.

Základní Git příkazy pro každý den

Založení projektu

git init                  # nový repozitář v aktuální složce
git clone <url>           # stažení existujícího repozitáře

Denní rutina

git status                # co je změněné
git add soubor.php        # přidání souboru do stagingu
git add .                 # přidání všech změn
git commit -m "Oprava výpočtu DPH na faktuře"
git push                  # odeslání na server (GitHub)
git pull                  # stažení změn ze serveru

Když se něco pokazí

git log --oneline --graph   # přehledná historie
git diff                    # co jsem změnil
git restore soubor.php      # zahodit změny v souboru
git stash                   # odložit rozdělanou práci stranou
git revert <hash>           # bezpečně vrátit konkrétní commit

Soubor .gitignore: co se nikdy neverzuje

Do repozitáře nepatří všechno. Soubor .gitignore v kořeni projektu říká Gitu, které soubory má ignorovat:

/vendor/
/node_modules/
/.env
.DS_Store

Nikdy necommitujte hesla, API klíče ani soubory .env. Co jednou odešlete na GitHub, zůstává v historii, i když to později smažete.

Větve: pracujte na více věcech najednou

Větev (branch) je v Gitu jen pohyblivý ukazatel na commit, proto je její vytvoření okamžité. Výchozí větev se jmenuje main. Na novou funkci si vytvoříte vlastní větev, a main tak máte pořád funkční:

git switch -c feature/novy-kosik   # nová větev
# ... práce, commity ...
git switch main
git merge feature/novy-kosik       # sloučení zpět

Práci s větvemi v týmu, pull requestům a firemnímu workflow se podrobně věnuji v navazujícím článku Git workflow: jak ho používají jednotlivci, týmy i velké firmy.

Nejčastější otázky o Gitu

Je Git zdarma?

Ano, Git je open source software zdarma pro komerční i nekomerční použití. Zdarma je i základní použití GitHubu, včetně soukromých repozitářů.

Potřebuji Git, když pracuji sám?

Rozhodně ano. Historie změn, možnost vrátit se zpět a záloha na GitHubu se hodí i jednotlivci. Navíc se bez Gitu neobejdete při nasazování webů a spolupráci s klienty.

Jaký je rozdíl mezi git fetch a git pull?

git fetch změny ze serveru jen stáhne, git pull je stáhne a rovnou sloučí do vaší větve. Pull je v praxi fetch + merge.

Jak se Git učit?

Skvělý start je interaktivní hra Learn Git Branching a kniha Pro Git, která je zdarma a částečně přeložená do češtiny.

Shrnutí

Git je dnes nepostradatelný nástroj: ukládá historii projektu jako řetěz commitů, změny procházejí přes staging area a větve umožňují pracovat na více věcech současně. V dalších dílech série se podíváme na týmové workflow s pull requesty a na správné verzování pomocí tagů a SemVeru.


Potřebujete pomoct s nastavením vývojového procesu, webem nebo jeho výkonem? Ozvěte se mi, rád pomůžu.

Profilová fotka Petra Smejkala
O autorovi

Petr Smejkal

Tvorba webových stránek byl můj dětský sen, který se mi podařilo proměnit ve skutečnost. Od té doby se sice spousta věcí změnila – dnes už nestačí znát jen HTML a CSS – ale právě rychlý vývoj technologií mě na tom baví nejvíc. Proto píšu tyto články z oblastí, ve kterých se profesně pohybuji. Doufám, že vám pomohou objevit nové informace, ať už pracujete na vlastním webu, nebo vás prostě jen zajímá svět moderního webu.

Zjistit víc o mně
Petr Smejkal na Firmy.cz
Logo Google

Chtěli byste se mnou spolupracovat? Napište mi!

Můžeme se setkat nebo si zavolat a probrat všechny potřebné detaily vašeho projektu.

KontaktovatZobrazit služby