Rebase, nebo merge? Jak udržet historii větví čistou
Bezpečnostní pravidla jsou jednoduchá: před vstupem do místnosti se osprchujte a osušte, na podlaze mějte protiskluzovou podložku, na těle žádné kovové šperky. Děti a osoby se srdečními problémy by měly saunu vynechat nebo zkrátit pobyt na 5 minut. Po skončení nechte těleso vychladnout, až poté ho přemístěte. Pravidelná kontrola kabelů a zástrčky je samozřejmostí.
Pro udržení čisté historie se osvědčuje několik návyků. Větev držte krátkou, ideálně na jeden logický celek. Před rebase si vždy aktualizujte main. Konflikty řešte po jednom commitu, ne najednou v celém rozsahu. Po rebase zkontrolujte výsledek pomocí git log --oneline --graph, ať vidíte, že historie je opravdu lineární. Pokud tým používá code review, rebase před otevřením pull requestu výrazně zjednoduší čtení změn.
Praktický postup je jednoduchý: nejprve určete, jak dlouho budou zákusky stát před podáváním. Pokud jen hodinu, sáhněte po lehčím krému a podávejte ihned. Pokud mají vydržet přes noc nebo cestovat, použijte tužší krém s vyšším podílem tuku a korpus lehce potřete ochrannou vrstvou. Nakonec vždy testujte na jednom zákusku: naplňte ho, nechte dvě hodiny při pokojové teplotě a zkuste přenést. Pokud se rozpadne, změňte krém, ne korpus. Právě tato zkouška odhalí chybu dřív, než ji uvidí hosté.
Když dodržíte tyto zásady, vydrží bylinky v plné vůni i rok. Poznáte to jednoduše: když sklenici otevřete, měla by vás praštit do nosu koncentrovaná vůně, ne prach a seno. Právě ten rozdíl rozhoduje o tom, jestli si v zimě uvaříte čaj, který skutečně pomůže, nebo jen barevnou vodu.
Využijte svislý prostor, ne podla
Na co si dát pozor při provo
Nejčastější chyba je rebase na veřejné větvi. Pokud přepíšete commity, které už jsou na sdíleném remotu, ostatní dostanou konflikty, které nedokážou vyřešit bez ručního zásahu. Druhá častá chyba je zapomenutý git push --force bez --force-with-lease. Tento přepínač ověří, že na remotu mezitím nikdo nepřidal nové commity, a zabrání přepsání cizí práce. Bez něj si můžete tiše smazat kolegovi commit.
Nakonec si nastavte jasné pravidlo, kdo co smí. Běžná dohoda je: rebase na vlastní větvi povolen, merge do main zakázán, začlenění probíhá fast-forwardem. Tím zmizí merge commity a historie zůstane čitelná i po měsících. Kdo potřebuje zachovat kontext větvení, ať použije merge vědomě a pojmenuje ho podle účelu. Rozhodnutí není o nástroji, ale o tom, jestli chcete historii vysvětlovat, nebo ji jen procházet.
Většina týmů skončí u stejného problému: hlavní větev je plná commitů typu „merge branch feature do main" a skutečné změny se v ní ztrácejí. Řešením není zakázat větve, ale změnit způsob, jakým je začleňujete. Rozdíl mezi rebase a merge není jen technický, je to rozdíl mezi historií, kterou někdo čte, a historií, kterou nikdo nechce otevřít.
Základní pravidlo zní: rebase přepisuje commity, merge je pouze spojuje. Když na své větvi spustíte git rebase main, Git vezme vaše commity, odloží je stranou, přesune větev na aktuální špičku main a commity znovu aplikuje jeden po druhém. Vznikne lineární historie bez merge commitu. Pokud místo toho použijete git merge main, vytvoří se nový commit se dvěma rodiči a historie se rozvětví.
Kdy rebase použít a kdy ho nechat být Rebase se hodí pro krátké funkční větve, které ještě nikdo jiný nemá stažené. Typický postup je: aktualizujete main, přepnete se na svou větev, spustíte git rebase main, vyřešíte konflikty, a teprve pak větev začleníte do main pomocí fast-forward. Klíčové je, že rebase děláte na větvi, kterou jste nikam neposlali. Jakmile ji někdo jiný použil jako základ své práce, rebase mu rozbije historii. V takovém případě je merge bezpečnější volba.