Verzování
Verzování je asi hlavní dovedností Gitu.
Každá jedna verze v Gitu se nazývá commit.
Jedná se o každou jednu změnu do repozitáře.
Tyto změny se do repozitáře ale nezaznemavají automaticky,
když je změna provedena.
Je nutné je vždy "commitnout".
Jak vytvořit commit
Dejme tomu, že máte naklonovaný repozitář a chcete do něj nahrát první soubor.
Kontrola stavu repozitáře
Prvním krokem je získání informací o stavu repozitáře. K tomu slouží následující příkaz:
git status
On branch main
nothing to commit, working tree clean
Tím zjistíme, že nemáme žádné změny v lokálním repozitáři. Nyní zkontrolujeme, zda není nová verze aktuálního repozitáře na serveru. Pokusíme se tedy stáhnout aktuální verzi repozitáře pomocí příkazu:
git pull
Username for 'https://git.kmecko.cz': kratochvil@kmecko.cz
Password for 'https://kratochvil%40kmecko.cz@git.kmecko.cz':
warning: redirecting to https://git.kmecko.cz/internal/web.git/
Already up to date.
V ideálním případě se vám objeví hláška "Already up to date.". To znamená, že máte aktuální verzi repozitáře.
Vytvoření změny
Nyní můžete tvořit, upravovat, odstraňovat soubory.
Vždy pouze použijte příkaz git status, který vám přesně ukáže změny, které jste provedli.
Pokud chcete změny poslat na server, musíte je nejdříve commitnout.
Commit
Nejprve pomocí příkazu git add vyberte, které soubory chcete commitnout.
Příkaz git status vám ukáže, které soubory jste vybrali.
Můžete použít příkaz git add * pro vybrání všech souborů.
Následně vytvořte commit pomocí příkazu git commit.
Ke commitu se vždy zadává popis (tzv. commit message).
Tento text by měl vždy přesně popisovat změny, které jste provedli.
Podrobný popis toho, jak správně formovat tuto zprávu naleznete v kapitole Commit message.
git commit -m "Pridal jsem soubor pro poznamky"
[main 97df565] Pridal jsem soubor pro poznamky
1 file changed, 1 insertion(+)
create mode 100644 poznamky.md
git status
On branch main
Untracked files:
(use "git add <file>..." to include in what will be committed)
poznamky.md
nothing added to commit but untracked files present (use "git add" to track)
git add poznamky.md
git status
On branch main
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
new file: poznamky.md
git commit -m "Pridal jsem soubor pro poznamky"
[main 97df565] Pridal jsem soubor pro poznamky
1 file changed, 1 insertion(+)
create mode 100644 poznamky.md
git status
On branch main
Your branch is ahead of 'origin/main' by 1 commit.
(use "git push" to publish your local commits)
nothing to commit, working tree clean
Pokud provádíte první commit, nejspíše se vám objeví tato hláška:
Author identity unknown
*** Please tell me who you are.
Run
git config --global user.email "you@example.com"
git config --global user.name "Your Name"
to set your account's default identity.
Omit --global to set the identity only in this repository.
fatal: empty ident name (for <kratochvil@kmecko.cz>) not allowed
Nezoufejte, jedná se pouze o konfiguraci gitu. Je třeba nastavit svou identitu pomocí příkazu. Použijte příkazy, které vám to píše a zadejte svůj email a jméno.
Pokud použijete parametr --global, jak vám Git napovída,
musíte počítat s tím, že toto nastavení se bude aplikovat pro všechny repozitáře,
které pod tímto uživatelem používate.
To může být problém, pokud máte repozitáře s více účty. Je vhodnější tuto konfiguraci nastavovat pro každý repozitář zvlášť.
Podobných hlášek Git zobrazuje více. Z pravidla přesně popisuje, co se děje a často i zobrazí příkazy, které situaci "opraví".
Jak odeslat commit na server
Příkaz git commit vytvoří commit lokálního repozitáře.
Nikam se neposílá.
Existuje pouze na stroji, kde byl vytvořen.
Pokud chcete poslat commit na server, musíte ho odeslat pomocí následujícího příkazu:
git push
Username for 'https://git.kmecko.cz': kratochvil@kmecko.cz
Password for 'https://kratochvil%40kmecko.cz@git.kmecko.cz':
warning: redirecting to https://git.kmecko.cz/internal/web.git/
Enumerating objects: 15, done.
Counting objects: 100% (15/15), done.
Delta compression using up to 12 threads
Compressing objects: 100% (8/8), done.
Writing objects: 100% (8/8), 665 bytes | 66.00 KiB/s, done.
Total 8 (delta 6), reused 0 (delta 0), pack-reused 0
remote:
remote: View merge request for dev-git:
remote: https://git.kmecko.cz/internal/web/-/merge_requests/47
remote:
To https://git.kmecko.cz/internal/web
063670d..fb4096e dev-git -> dev-git
Při odesílání na server budete vyzváni k zadání přihlašovacích údajů. Stejně jako při klonování nebo aktualizování repozitáře.
Tento příkaz odešle všechny commity, které jste vytvořili, na server.
Nabízí se otázka: "Co se stane, když mezi tím, co jsem něco upravoval, někdo poslal commit na server?". Jedná se o obecný problém konfliktu. Obecně se tyto konflikty velmi obtížně řeší. Git má nástroje, které umožňují tyto konflikty minimalizovat. Více se dozvíte v kapitole o větvích a v navazujících kapitolách.
Jak cestovat mezi commity
Jak již bylo zmíněno, pomocí gitu je možné se vrátit na starší verze projektu.
Konkrétně se lze vrátit vždy na konkrétní commit.
K tomu slouží poměrně magický příkaz git checkout.
Pokaždé, když vytváříme commit, tak mu git přidělí tzv. commit ID. Toto ID je jedinečný identifikátor commitu. Jedná se o 40 znakový hashový kód. Pro zobrazení všech commitů v repozitáři a jejich ID použijte příkaz:
git log
commit 6550093973bec5ffe763a660c305b0520a3d42de (HEAD -> main)
Author: Patrik Kratochvil <kratochvil@kmecko.cz>
Date: Thu Nov 6 20:35:42 2025 +0100
Odebral jsem poznamku
commit 24b2d2ec81202365e85849140d6ce39aaddfa1da
Author: Patrik Kratochvil <kratochvil@kmecko.cz>
Date: Thu Nov 6 20:35:03 2025 +0100
Pridal jsem si poznamku
commit 97df565fd4c12b6b8d28081a15242edebfb8557e
Author: Patrik Kratochvil <kratochvil@kmecko.cz>
Date: Thu Nov 6 19:58:54 2025 +0100
Pridal jsem soubor pro poznamky
commit 11a0dd30498aa684bc02e18b1478eb93d15daa82
Author: Patrik Kratochvil <kratochvil@kmecko.cz>
Date: Thu Nov 6 19:19:43 2025 +0100
Initial commit
V praxi se setkáte i s kratšimi commit ID. Vetšinou mají 7 znaků, ale může být delší, pokud je třeba. Tyto identifátory jsou unikátní pouze v aktuálním repozitáři. Jedná se vždy o několik prvních znaků hlavního identifikátoru. Nicméně, lze je bez problémů použít pro jakékoliv operace.
Na konkrétní commit se lze tedy dostat pomocí příkazu:
git checkout 11a0dd30498aa684bc02e18b1478eb93d15daa82
Note: switching to '11a0dd30498aa684bc02e18b1478eb93d15daa82'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at 11a0dd3 Initial commit
Tímto příkazem jsem se přesunul do staré verze projektu. Ještě před moment, kdy jsem vytvořil první soubor.
Při jakémkoli cestování v repozitáři je nutné, abyste neměli necommitnuté lokální změny.
To zjistíte standardně pomocí příkazu git status.
Před přesunem tedy vždy změny commitněte.
Nebo, pokud je nepotřebujete, můžete je zahodit pomocí příkazu:
git checkout -- .
Jak se vrátit na poslední commit
Příkaz git checkout jako parametr nepřijímá pouze commit-id, ale i názvy větví.
Pokud se tedy checkoutneme na aktuální větev, dostaneme se tak na poslední commit.
K tomu použijeme příkaz:
git checkout main
Previous HEAD position was 11a0dd3 Initial commit
Switched to branch 'main'
Jak provést změny ve staré verzi
Jeden z hlavních důvodů, proč byste se chtěli vrátit do staré verze nějakého projektu, je ten, že jste přišli na to, že vaše dosavadní cesta nikam nevede a chcete začít znovu.
Jakmile se checkoutnete do staré verze, je možné provést změny. Pokud budete chtít změny commitnout, smažou se všechny následující commity. To není úplně vhodné, navíc v případě následného pushe vznikne zmiňovaný konflikt. Mnohem lepší řešení je ze staré verze vytvořit novou větev a pokračovat ve vývoji v ní. O tom se dozvíte více v kapitole o větvích.
Jak často commitovat?
Je asi jasné, že všechny dovednosti gitu budou užitečné jenom v případě, že budete mít dostatečné množství commitů. Pokud budete commitovat příliš málo, tak mezi jednotlivými commity budou příliš velké změny a bude se velmi obtížně řešit jakékoliv přesouvání. Je tedy důležité dbát na pravidelnost commitování.
Jedním z hlavních indikátorů toho, že málo commitujete, je to, že nevíte, kolik toho vlastně napsat do commit message. V commit message by správně mělo být jasné, proč a jaké změny jste provedli. Pokud se budete snažit popisovat 10 různých věcí z 10 různých důvodů, mělo by vám být zřejmé, že tady něco není v pořádku.
Kdy tedy commitovat
Obecně je dobré commitovat, jakmile dokončíte nějakou větší jednolitou funkcionalitu. Může to být například:
- Vytvoření KiCad projektu
- Vytvoření části schématu pro napájení
- Vytvoření části schématu pro zapojení MCU
- Dokončení schématu
- Přiřazení pouzder
- Oprava pouzder po změně velikosti desky
- Naroutovaná deska
- Vyřešená návrhová pravidla desky
- Základní struktura programu
- Vytvoření kostry objektové struktury kódu
- Přidaná dokumentace kódu
- Přidané testy kódu
- Vyřešený bug, který způsoboval to a to
Toto je pravidlo, které se s vámi bude táhnout nejspíše celý váš vývojářský život. Obzvláště z počátku máme problém si zvyknout zveřejňovat to, co vytvoříme. Však to máme na PC, tak to stačí, ne? ...


... Ne! Pro týmovou spolupráci je velmi důležité, že jsou aktualizace postupu plynulé a snadno viditelné. Každý v týmu potom může vidět, že se projekt posouvá, a může i vidět, jakým směrem.