Moderní tvorba webových aplikací

O webu

Jak používat git rebase

Proč a jak používat git rebase pro přehlednou historii v Gitu.

5 minut

Při práci ve více lidech s versovacím nástrojem Git je prakticky nevyhnutelný stav, kdy vývoj probíhá paraelně ve více větvích. V extrémním případě potom ve větvích různě od sebe odvozených.

Např. první feature branch odvozená z hlavní main větve, ze které vychází další feature branch.

Příkaz git rebase (popř. git merge) se potom hodí pro synchronisaci větví mezi sebou, aby pořád vycházely z aktuálního mainu.

Merge vs. rebase

Obecně celkem platí, že git merge používají dvě skupiny lidí:

  1. lidé, co moc nerozumí Gitu,
  2. lidé, co neřeší hezkou historii commitů

Hezká historie souvisí i s vytvářením smysluplných commitů.

Jsou i lidé, co se rebase bojí. Přitom pro to moc není důvod – použití je dost jednoduché.

Základní rebase

Běžné použití je následovné:

Nejprve se stáhne aktuální stav:

git fetch

Do aktuální feature větve se dostanou nové commity prostým:

git rebase origin/main

Co se stane:

  1. Git najde poslední společný commit obou větví.
  2. Dočasně uloží všechny commity z feature větve.
  3. Přesune feature větev na konec main větve.
  4. Postupně aplikuje uložené commity jeden po druhém.

Výsledkem je lineární historie, kde všechny commity z feature větve následují po commitech z main větve.

Nezbývá než změny pushnout. Je zde potřeba uvést přepínač force, protože se změnila historie.

git push -f

Případně jde rebase naklikat ve VS Code:

Rebase ve VS Code

Rebase --onto

Příkaz git rebase --onto se hodí pro případy, kdy moje větev vychází z větve, na které pracuje někdo jiný. A ten tam mění historii. To se obecně nepovažuje za dobrý postup, ale s rebase --onto to není problém.

git rebase --onto origin/cizi-vetev HEAD~

Tento příklad vezme můj poslední commit (HEAD~) a umístí ho nad celou cizí větev. Starší commity se ignorují, takže nehrozí řešení nesmyslných konfliktů.

Interaktivní rebase

Interaktivní rebase je mocný nástroj pro úpravu historie:

git rebase -i HEAD~3

Otevře se editor s možnostmi:

  • pick – ponechat commit
  • reword – změnit commit message
  • edit – upravit commit
  • squash – sloučit s předchozím
  • fixup – sloučit a zahodit message
  • drop – smazat commit

Řešení konfliktů

Při rebase mohou nastat konflikty. Git oznámí konflikt a zastaví rebase. Po vyřešení:

git add <conflicted-files>
git rebase --continue

Nebo můžete rebase zrušit:

git rebase --abort

Dobré praktiky

  • Pravidelně rebaseovat s hlavní větví. Minimalisuje se tím nepěkné překvapení po dokončení úkolu s řešením hromady konfliktů.
  • Mít main větev nastavenou jako protected. Jestliže se používá force push, je jen otázka času, kdy se člověk splete, a pustí to nad main větví.
  • Nepoužívat force push do větví, kde pracuje více lidí. Nebo nepracovat v jedné větvi ve více lidech, ale řešit to další odvozenou větví a merge/pull requestem.

Závěr

git rebase je nástroj pro vytvoření čisté a lineární historie. Umožňuje přesunout commity na novou základnu a upravit historii před publikováním. Je to alternativa k merge, která zachovává přehlednou historii, ale vyžaduje opatrnost při používání na veřejných větvích.

Související články

Checklist věcí, na které se při přechodu na nový iPhone zapomíná

Na co se nejčastěji zapomíná při migraci na nový iPhone? Bankovní aplikace, messengery, eGovernment služby a další aplikace.

12 minut

Google Antigravity: Nová AI vývojářská platforma

Google představil Antigravity - vývojářskou platformu s AI agenty poháněnou modely Gemini 3, Claude Sonnet a GPT-OSS.

7 minut

Windows 10 bez podpory: Jaké máte možnosti

Podpora Windows 10 skončila 14. října 2025. Zjistěte, jaké možnosti máte.

15 minut

Generování QR kódu

Co je to QR kód a jak ho okamžitě vytvořit pomocí jednoduchého online generátoru.

18 minut

Novinky e-mailem

Když budu mít něco opravdu zajímavého, můžu vám to poslat e-mailem

Přidej se k 500+ čtenářům
Jen kvalitní obsah
Žádný spam

Web jecas.cz píše Bohumil Jahoda, kontakt
Seznam všech článků
2013–2025