Git — co to je, principy fungování a příkazy

Autor: IT Sectr Publikováno: 2026-05-09 Doba čtení: 8 min

Git — je distribuovaný systém pro správu verzí s otevřeným zdrojovým kódem, vytvořený Linusem Torvaldsem v roce 2005 pro vývoj jádra Linux. Na rozdíl od centralizovaných systémů, jako je SVN, Git ukládá úplnou kopii repozitáře na každém zařízení vývojáře, což umožňuje pracovat bez trvalého připojení k serveru. Podle údajů Git SCM, 2024 se Git používá ve více než 90 % všech komerčních projektů vývoje softwaru.

Hlavní body

  • Git — distribuovaný VCS s úplnou historií změn na každém počítači vývojáře.
  • Commity vytvářejí snímky stavu souborů s unikátním SHA-1 hash pro sledování změn.
  • Větve v Git izolují vývoj funkcí a umožňují paralelní práci bez konfliktů.
  • Merge a Rebase — dva způsoby integrace změn s různými přístupy k historii commitů.
  • GitHub, GitLab a Bitbucket — webové platformy přidávající UI a CI/CD nad repozitáře Git.

Co je Git?

Git — je distribuovaný systém pro správu verzí (VCS), který sleduje změny v souborech a umožňuje několika vývojářům pracovat současně na stejném projektu. Na rozdíl od centralizovaných systémů má v Git každý vývojář úplnou kopii repozitáře včetně celé historie změn, což činí systém odolným vůči ztrátě dat a nevyžaduje trvalé připojení k centrálnímu serveru.

Historie Gitu začala v roce 2005, kdy Linus Torvalds vytvořil nový VCS poté, co společnost BitKeeper zrušila bezplatnou licenci na svůj systém pro vývojáře jádra Linux. Cíle byly: rychlost, jednoduchost architektury, podpora nelineárního vývoje prostřednictvím větvení a plná distribuovanost. Během 3 měsíců Torvalds napsal jádro Gitu a po roce projekt přešel na samosprávu pod vedením Junia Hamana.

Podle průzkumu Stack Overflow (2024) používá Git 93,9 % profesionálních vývojářů, což z něj činí dominantní systém správy verzí v průmyslu. Nejbližší konkurent — Subversion (SVN) — se používá pouze v 5,2 % projektů, převážně ve velkých podnikových prostředích s centralizovanými procesy.

Jak Git funguje: repozitář a commity

Repozitář Git — je adresář, ve kterém Git sleduje změny všech souborů. Uvnitř adresáře se nachází skrytá složka .git, kde jsou uloženy všechny objekty systému: commity, stromy, bloby a reference. Když vývojář vytvoří commit, Git nekopíruje soubory celé — vytvoří snímek stavu (snapshot) a uloží na něj referenci.

Každý commit obsahuje: unikátní SHA-1 hash (40 znaků), referenci na předchozí commit (parent), autora, datum, zprávu commitu a referenci na strom (tree), který popisuje stav souborů v okamžiku commitu. Řetězec commitů tvoří orientovaný acyklický graf, kde každý commit ukazuje na jednoho nebo více rodičů.

bash
# Inicializace repozitáře
git init my-project
cd my-project

# Vytvoření commitu
echo "Hello, Git" > README.md
git add README.md
git commit -m "Initial commit"

# Zobrazení historie
git log --oneline --graph --all

Git používá tři hlavní oblasti: working directory (soubory na disku), staging area (index, kam se dostávají připravené soubory) a repository (historie commitů). Příkaz git add přesouvá změny z pracovního adresáře do staging a git commit zaznamenává obsah stagingu v repozitáři. Toto oddělení umožňuje vývojáři sestavit smysluplný commit ze sady změn, aniž by musel zaznamenávat každou opravu zvlášť.

Základní příkazy Gitu

Základní příkazy Gitu pokrývají 90 % každodenních operací vývojáře. Příkaz git clone vytvoří lokální kopii vzdáleného repozitáře, git pull stáhne změny ze serveru a sloučí je s aktuální větví, a git push odešle lokální commity na server. Tyto tři příkazy tvoří základní cyklus práce s Gitem.

Pro zobrazení stavu se používá git status — ukazuje, které soubory byly změněny, které byly přidány do staging a které nejsou sledovány. git diff zobrazuje konkrétní změny v souborech před přidáním do staging. Níže je uvedena tabulka s nejčastěji používanými příkazy:

PříkazAkcePříklad
git cloneKopíruje vzdálený repozitářgit clone https://example.com/repo
git addPřidává soubory do staginggit add src/main.kt
git commitZaznamenává změny v historiigit commit -m "Fix login bug"
git pushOdesílá commity na servergit push origin main
git pullStahuje změny ze serverugit pull origin feature

Pro vrácení změn nabízí Git několik možností. git reset přesouvá ukazatel větve na zadaný commit a může resetovat staging nebo pracovní adresář. git revert vytváří nový commit, který vrací změny zadaného commitu — to je bezpečný způsob vrácení pro sdílené větve, protože historie se nepřepisuje.

Větvení v Git: main, feature a release

Větve v Git — jsou lehké přemístitelné ukazatele na konkrétní commit. Vytvoření nové větve nekopíruje soubory, pouze vytváří nový ukazatel, což činí větvení prakticky okamžitým. Větev main (dříve master) — hlavní větev projektu, která obsahuje stabilní, k vydání připravený kód.

Standardní praxí je použití Git Flow nebo GitHub Flow. V Git Flow se používají větve: main (release kód), develop (integrační větev), feature/* (nové funkce), release/* (příprava vydání) a hotfix/* (naléhavé opravy). GitHub Flow je jednodušší: pouze main a feature větve, všechny změny jsou doručovány prostřednictvím Pull Request.

bash
# Vytvoření a přepnutí větve
git branch feature-auth
git checkout feature-auth
# nebo jedním příkazem:
git checkout -b feature-auth

# Seznam větví
git branch --list
git branch -a  # všechny větve včetně vzdálených

# Smazání větve
git branch -d feature-auth

Důležitou vlastností větvení v Git — možnost cherry-pick: přenesení jednotlivého commitu z jedné větve do druhé pomocí příkazu git cherry-pick <hash>. To je užitečné, když potřebujete přenést opravu chyby z feature větve do release bez sloučení celé větve. Git také podporuje rebase a interaktivní rebase (git rebase -i) pro lepení, přeuspořádání a úpravy commitů.

Sloučení: Merge a Rebase

Merge (sloučení) vytváří speciální merge-commit, který má dva rodiče. Tento commit zaznamenává fakt spojení dvou větví a zachovává úplnou historii — je vidět, kde a kdy došlo ke sloučení. Merge zachovává historii v podobě, v jaké byla vytvořena, což zjednodušuje audit, ale činí graf commitů složitějším.

Rebase (přesazení) místo vytvoření merge-commitu přesouvá commity aktuální větve na vrchol cílové větve. Historie se stává lineární — vzniká dojem, že vývoj probíhal sekvenčně. Rebase však přepisuje historii, mění SHA-1 hashe commitů, což ho činí nebezpečným pro sdílené větve, ke kterým mají přístup jiní vývojáři.

Doporučení pro výběr: použijte merge pro veřejné větve, kde historii vidí ostatní vývojáři (feature → develop), a rebase pro lokální práci, když potřebujete aplikovat čerstvé změny z main do své feature větve před vytvořením Pull Request. Pravidlo je jednoduché: pokud byl commit již odeslán na server — nerebaseujte ho.

Řešení konfliktů

Konflikt sloučení nastává, když Git nemůže automaticky spojit změny v jednom souboru. Git označuje konfliktní části v souboru speciálními značkami: <<<<<<< (naše změny), ======= (oddělovač), >>>>>>> (jejich změny). Vývojář ručně upraví soubor, vybere požadovanou variantu nebo zkombinuje obě, a dokončí sloučení commitem.

Práce se vzdálenými repozitáři

Vzdálený repozitář (remote) — kopie Git repozitáře umístěná na serveru. GitHub, GitLab a Bitbucket jsou nejoblíbenější platformy pro hostování vzdálených repozitářů. Poskytují webové rozhraní pro prohlížení kódu, správu přístupu, kontrolu kódu a integraci s CI/CD systémy.

V Git lze nakonfigurovat několik vzdálených repozitářů pro jeden projekt. Ve výchozím nastavení se hlavní remote nazývá origin. Příkaz git remote add přidává nový remote, git fetch stahuje změny bez sloučení, a git pull je zkratka pro git fetch + git merge. Pro práci s kódem prostřednictvím Pull Request vývojář vytvoří fork repozitáře, naklonuje jej, pracuje ve feature větvi a odešle žádost o sloučení do původního repozitáře.

bash
# Přidání vzdáleného repozitáře
git remote add origin https://github.com/user/repo.git

# Zobrazení vzdálených repozitářů
git remote -v

# Odeslání větve na server
git push -u origin feature-auth

# Stažení změn ze vzdálené větve
git pull origin main

Vzdálené repozitáře podporují tagování pro označování release verzí. Tagy mohou být lehké (pouze ukazatel na commit) a anotované (obsahují metadata: autor, datum, zpráva). Anotované tagy se doporučují pro release verze, protože předávají úplné informace o verzi a mohou být podepsány GPG klíčem pro ověření autorství.

Git Worktree pro paralelní práci

Git Worktree umožňuje současnou práci s několika větvemi v různých adresářích bez přepínání mezi nimi. Příkaz git worktree add ../feature-auth feature-auth vytváří nový pracovní adresář feature-auth, kde lze psát kód bez přepínání větve v hlavním adresáři. Worktree je užitečný pro rychlé opravy v release větvi, když je hlavní adresář zaneprázdněn dlouhodobým vývojem.

Git Submodules pro závislosti

Git Submodules — mechanismus pro vložení jednoho Git repozitáře do druhého. Submodul ukládá referenci na pevný commit externího repozitáře, což zaručuje reprodukovatelnost sestavení. Příkaz git submodule add https://github.com/example/lib.git přidává externí knihovnu jako podmodul. Při klonování projektu s podmoduly je pro načtení všech závislostí třeba provést git submodule update --init --recursive.

Často kladené otázky

Čím se Git liší od SVN?

Git — distribuovaný VCS s lokální historií a možností práce offline. SVN — centralizovaný systém vyžadující trvalé připojení k serveru pro všechny operace kromě prohlížení souborů.

Jak vrátit poslední commit?

Použijte git revert HEAD pro bezpečné vrácení (vytvoří se nový commit). Pokud commit ještě nebyl odeslán na server, můžete použít git reset --soft HEAD~1.

Co je .gitignore a k čemu slouží?

.gitignore — soubor, ve kterém jsou uvedeny vzory souborů a adresářů, které má Git ignorovat. Používá se k vyloučení dočasných souborů, sestavení a konfigurací IDE z repozitáře.

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

git fetch stahuje změny ze serveru, ale neslučuje je s aktuální větví. git pull provede fetch a okamžitě provede merge. Pro kontrolu použijte fetch + prohlédnutí diff, poté ruční merge.

Jak opravit zprávu posledního commitu?

Použijte git commit --amend — tento příkaz otevře editor pro změnu zprávy commitu. Pokud je commit již na serveru, bude vyžadován git push --force, což je nebezpečné pro sdílené větve.

Shrnutí

  • Git — distribuovaný systém správy verzí od Linuse Torvaldse, který se stal standardem ve vývoji softwaru.
  • Commity zaznamenávají snímky stavu souborů s SHA-1 hash a referencí na předchozí commit.
  • Větve — lehké ukazatele na commity umožňující paralelní vývoj funkcí.
  • Merge vytváří merge-commit se dvěma rodiči, Rebase — přepisuje historii pro lineární graf.
  • Vzdálené repozitáře (origin) synchronizují kód mezi vývojáři pomocí push a pull.
  • GitHub, GitLab, Bitbucket přidávají webové rozhraní, kontrolu kódu a CI/CD nad Git.
  • Začněte klonováním repozitáře a zvládnutím tří příkazů: commit, push, pull — pokrývají základní pracovní cyklus.

Vyvineme mobilní aplikaci na klíč

IT Sectr vytváří aplikace pro iOS a Android pro startupy a podniky od roku 2017. Poradíme vám a navrhneme nejlepší řešení.

Prodiskutovat projekt

Přečtěte si také