Merge commity, které zbytečně zaplavují historii
Co dělat ve chvíli, kdy se káva nebo víno vyli
Největší chybou při snaze o lineární historii je zapomenutí na to, že fast-forward není vždy možný. Pokud větev obsahuje commity, které nejdou aplikovat na aktuální stav cílové větve, Git vytvoří merge commit i při použití merge. Řešením je rebase před sloučením. Další častá chyba je rebase příliš mnoha commitů najednou. Když jich je dvacet, konflikty se hromadí a řešení je nepřehledné. Lepší je rebase po menších částech nebo použít interaktivní rebase a commity rozdělit či sloučit.
Největší chyby, které lidé dělají: postaví boty na topení, dají je do sušičky, použijí fén na maximum nebo je nechají mokré v zavázaném pytli. Další častá chyba je sušení ve svislé poloze za patu, kdy se bota zdeformuje. Raději je položte na bok na ručník, nebo je postavte na podlahu a podepřete papírem. Pokud spěcháte, použijte ventilátor na nízké otáčky v místnosti, ne fén. Rychlost tu není cíl, cílem je, aby po uschnutí vypadaly jako předtím.
Barviva, která se vracejí i po vyčištěn
Typické chyby: dýchání odbýt dvěma minutami, použít příliš horkou vodu, nasypat byliny přímo do vany nebo koupel opakovat dvakrát denně. Další chybou je míchat příliš mnoho druhů bylin najednou. Stačí tři: například lipový květ, meduňka a máta. Každá z nich působí jinak a dohromady se po dechovém cvičení doplňují. Když přidáte deset bylin, výsledek je slabší, ne silnější.
Poslední věc, kterou je potřeba hlídat, je reakce na konflikty během rebase. Když Git zastaví a oznámí konflikt, nepanikař. Otevři konfliktní soubory, vyřeš je, přidej je do indexu a pokračuj v rebase. Pokud si nejsi jistý, můžeš rebase kdykoli přerušit a vrátit se do původního stavu. Nikdy ale necommituj konfliktní značky. To je chyba, která se objeví až v produkci a odhalit ji může trvat dlouho.
Typické chyby se opakují. Pacienti vybírají podle jedné celkové sumy a ignorují, kolik návštěv je v ní zahrnuto. Dále podceňují cestování — dojíždět na kontroly každé tři týdny do vzdálené ordinace je vyčerpávající a někteří léčbu nakonec vzdají. A konečně se nechají ovlivnit slevou na první konzultaci, aniž by se zeptali na cenu zbytku. Konzultace je nejmenší položka celého plánu.
Kdy rebase použít a kdy ho raději vynechat Rebase je bezpečný na větvích, které ještě nikdo jiný nepoužívá. Jakmile svou větev pushneš a kolegové na ní staví, rebase je zakázaný. Přepisovat veřejnou historii znamená, že ostatním přestanou fungovat jejich lokální kopie a budou muset řešit vynucený push. To je častý zdroj zmatku a ztracené práce. Pravidlo je jednoduché: rebase na soukromých větvích, merge nebo fast-forward na sdílených.
Pro týmy, které chtějí konzistentní výsledek, se osvědčuje nastavit výchozí chování pro pull. Místo klasického pull, který vytváří merge commit, použij rebase variantu. Tím se při aktualizaci lokální větve tvé commity přenesou na nový základ a žádný zbytečný merge nevznikne. Stejně tak je vhodné zavést pravidlo, že před vytvořením pull requestu si autor sám provede rebase na cílovou větev. Ušetří to čas recenzentům i CI systému.
Základem je rebase místo merge. Když dokončíš práci na své větvi, přepni se na ni a spusť příkaz, který přenese tvé commity na aktuální špičku cílové větve. Tím se vytvoří nové commity s novými hashi, ale obsah zůstane stejný. Před rebase si vždy ověř, že máš čistý pracovní adresář. Pokud máš necommitnuté změny, použij stash, jinak rebase selže nebo přijdeš o rozdělanou práci.
Každý tým, který pracuje s Gitem denně, dříve nebo později narazí na historii plnou merge commitů. Vypadá to neškodně, dokud se nezačneš snažit dohledat, kdy a proč se konkrétní změna dostala do větve. Lineární historie bez merge commitů není jen estetická záležitost. Zásadně zjednodušuje code review, zkracuje dobu potřebnou k nalezení regrese a výrazně snižuje riziko konfliktů při zpětném sloučení do hlavní větve.