5 pravidel pro lineární historii větví bez merge commitů

From shoutwiki.club
Jump to navigation Jump to search

Jídlo a pití na noc držte jednoduché. Sladkosti a bublinky znamenají časté buzení a ranní únavu. Banán, suchý rohlík nebo voda stačí. Pokud host jí něco jinak než vaše dítě, domluvte se s jeho rodiči předem, ne až u stolu. Ráno připravte snídani, kterou zvládne i nejistý jedlík: pečivo, máslo, džem, ovoce. Nic, co by vypadalo jako test odvahy.

Začněte tam, kde vás současný stav obtěžuje nejvíc. Není to estetika, ale provoz. Ráno se tlačíte v jedné koupelně, zásuvky nestíhají rychlovarnou konvici a mikrovlnku zároveň, topení v jedné místnosti přetápí a ve druhé je zima. Sepište si tyto konkrétní situace a k nim přiřaďte úpravy. Tím vznikne seznam, který má logiku a který se dá obhájit i před rodinou.

Rezervy se hledají i na straně příjmů a závazků. Zkontrolujte, zda platíte za služby, které už nevyužíváte, zda máte nastavené stejné limity jako před lety, a zda některé platby neprobíhají dvakrát. U pravidelných plateb si nastavte připomínku před obnovením. U sezónních výdajů – energie, školní pomůcky, dovolená – si vytvořte měsíční rezervu v menších částkách místo jednorázového nárazu, který vždycky rozhází celý měsíc.

Základem je rebase místo merge při aktualizaci vlastní větve. Když na feature větvi pracujete déle, hlavní větev mezitím odjede dopředu. Místo git merge main použijte git rebase main. Git vezme vaše commity, dočasně je odloží, přesune větev na nový vrchol main a commity znovu přehraje. Výsledek je lineární: žádný merge commit, žádné dvojité rodiče. Podmínkou je, že svou větev máte pouze lokálně a nikdo jiný na ní nepracuje.

Nejčastější chyba je přitápění. Slepice, které jsou zvyklé na teplo, pak při výpadku proudu nebo poklesu teploty uhynou, protože si nestihnou vytvořit dostatečnou vrstvu tuku a peří. Pokud už topíš, drž teplotu jen mírně nad nulou a nikdy neskákej z tepla do mrazu. Hlavní je sucho, klid a dostatek světla – v zimě přidej do kurníku slabé světlo, aby slepice stihly sežrat krmivo během krátkého dne. Když je kurník suchý a bez průvanu, slepice zimu zvládnou i bez topení.

Posledním krokem je sloučení do main bez merge commitu. Existují dvě možnosti: fast-forward, kdy se hlavní větev jen posune na váš vrchol, nebo takzvaný squash, kdy se všechny vaše commity sloučí do jednoho. Fast-forward zachová jednotlivé commity, squash je nahradí jedním. Volba závisí na tom, jak detailní historii chcete. Ať zvolíte cokoli, výsledkem je lineární řada commitů bez merge uzlů. To oceníte při hledání chyby nástrojem git bisect, protože každý krok je jeden commit a není třeba řešit, kterou větev vlastně testujete.

Merge commity vznikají ve chvíli, kdy do sebe sloučíte dvě větve, které se od sebe mezitím rozešly. Pro týmový vývoj to znamená jednu nepříjemnost: historie přestává být čitelná. Každý merge commit je místo, kde se ztrácí informace o tom, kdo co skutečně napsal a v jakém pořadí. Řešením je udržovat historii lineární tím, že změny před sloučením vždy přenesete na aktuální vrchol cílové větve. Následující pravidla popisují, jak to dělat bez zbytečných konfliktů a jak se vyhnout typickým chybám.

Napáječku řeš každý den. Voda v ní nesmí zamrznout, ale ani se nesmí přelévat. Používej nádobu, kterou slepice nepřevrhnou, a postav ji na dřevěnou podložku, ne na holou zem. Pokud voda přes noc zamrzne, nenalévej horkou – náhlá změna teploty nádobu roztrhne. Lepší je přinést vodu vlažnou a ráno ji vyměnit. Krmivo podávej suché, nejlépe v uzavřených dávkovačích, aby se do něj nedostala vlhkost a nerozmrzalo.

Když kombinujete závěsy i koberce, nečekejte zázrak od jednoho kusu. Útlum se sčítá, ale jen když jsou materiály různé hmotnosti a umístěné v různých rovinách — jeden na okně, druhý na podlaze, případně akustický panel na stěně. Vyhněte se nákupu sady „vše v jednom" bez údajů o hmotnosti a složení. Prodejce by měl umět říct gramáž, tloušťku a to, zda jde o tkaninu určenou k akustickému útlumu, nebo jen o dekorační látku.

Před sloučením do hlavní větve používejte interaktivní rebase: git rebase -i main. Nabídne vám seznam commitů, které můžete sloučit, přejmenovat nebo zahodit. Sloučením několika commitů do jednoho odstraníte šum typu „oprava překlepu" a „ještě jedna úprava". Výsledná historie pak obsahuje jeden smysluplný záznam pro jednu logickou změnu. Pozor na commity, které už jsou na remote v hlavní větvi, ty nikdy nepřepisujte.

Lineární historie není dogma. Je to nástroj pro týmy, kde se na jedné větvi střídá více lidí a kde je rychlá orientace v commitech důležitější než přesné zachování větvení. Pokud tato podmínka neplatí, merge commity ničemu nevadí. Rozhodněte se jednou a držte se toho v celém týmu, jinak vznikne mix, ve kterém se nevyzná nikdo.