Merge commity, které zbytečně zaplavují historii: Różnice pomiędzy wersjami

Z Mazovia
Utworzono nową stronę "Regály v obchodě vyrobte z proužků kartonu naolejovaných do „L" a vlepených do stran. Zboží nahraďte tím, co máte doma: prázdné kelímky od jogurtu, vyprané obaly od vajec, roličky od papírových utěrek. Ceny pište fixem na malé čtverečky a přilepte je na špejle zapíchnuté do kousku modelíny. U kuchyňky se osvědčily víčka od zavařovacích sklenic jako talíře a dřevěné vařečky místo příborů. Všechno, co se dá sundat a z…"
 
mNie podano opisu zmian
 
Linia 1: Linia 1:
Regály v obchodě vyrobte z proužků kartonu naolejovaných do „L" a vlepených do stran. Zboží nahraďte tím, co máte doma: prázdné kelímky od jogurtu, vyprané obaly od vajec, roličky od papírových utěrek. Ceny pište fixem na malé čtverečky a přilepte je na špejle zapíchnuté do kousku modelíny. U kuchyňky se osvědčily víčka od zavařovacích sklenic jako talíře a dřevěné vařečky místo příborů. Všechno, co se dá sundat a znovu nasadit, děti zaměstná déle než statická výzdoba.<br><br>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.<br><br>Nejčastější chyba je lití těsta na plech lžící. Věnečky potřebují tvar, který drží. Použijte cukrářský sáček s hvězdicovou tryskou a stříkejte kroužky o průměru asi pět centimetrů s dostatečným rozestupem. Plech vyložte pečicím papírem, žádné mazání tukem – tuk na plechu způsobí, že se spodek věnečků „smaží" a po vyndání zvlhne. Před pečením povrch jemně postříkejte vodou z rozprašovače, pomůže to rovnoměrnému nadzvednutí.<br><br>Děti potřebují viditelnou hranici. Kobereček, jiná barva podlahy, kus nábytku z boku nebo nízká police stačí. Hranice nesmí být vysoká a neprostupná, jinak se koutek stane trestem. Na druhé straně nesmí být tak volná, že se do ní okamžitě navalí hračky. Pomáhá pravidlo, že na pracovní ploše je vždy jen to, co patří k právě dělanému úkolu. Vše ostatní má své místo mimo koutek, i kdyby to bylo jen v krabici vedle.<br><br>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.<br><br>Dřevěný nábytek a kuchyňské prkénko nesnáší dvě věci: příliš mnoho vody a příliš suchý vzduch. Prkénko myjte ručně, nikdy v myčce, a po každém umytí ho postavte na hranu, aby oschlo ze všech stran. Jednou za měsíc ho potřete potravinářským olejem — tenká vrstva, nechat vsáknout, přebytek setřít. Nábytek stačí otírat vlhkým hadrem a jednou za čas přejít voskem nebo olejem podle povrchu. Co dřevo zabíjí, je mokrý hadr položený na desce a přímé slunce. Stejně tak mu škodí radiátor v zimě, kdy vzduch vysychá. Vložte do místnosti misku s vodou, nebo použijte zvlhčovač.<br><br>Rošt není jen mřížka, na kterou se položí matrace. Určuje, jak se váha rozloží, kam se odvádí vlhkost a jestli matrace vydrží svou tvrdost. Pokud zvolíte rošt špatně, i drahá matrace se po čase proleží nebo začne bolet záda. Rozhodující je proto typ matrace, hmotnost spáče a způsob, jakým se na postel ukládáte.<br><br>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.<br><br>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.<br><br>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.<br><br>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.
Kde se to nejčastěji pokazí První chyba je rebase už pushnuté větve, kterou má někdo jiný staženou. Force push přepíše historii a kolegovi vzniknou duplicitní commity nebo konflikty. Pravidlo je jednoduché: rebasujte jen to, co jste ještě neposlali do sdílené větve. Pokud už pushnutá větev rebase potřebuje, použijte --force-with-lease, které selže, když někdo mezitím pushnul. Nikdy nepoužívejte --force naslepo.<br><br>Základem je nastavit, aby se při merge do hlavní větve nevytvářel merge commit. V Gitu to zařídí git config --global pull.rebase true a git config --global merge.ff only. Tím se lokální pull vždy přehraje a merge bez fast-forward selže. Pro vzdálenou větev si nastavte git config branch.main.mergeOptions "--ff-only". Kdo potřebuje sloučit delší větev, udělá rebase ručně: git rebase main na své větvi, vyřeší konflikty a pak teprve pushne.<br><br>Zvláštní pozornost věnujte merge z hlavní větve do své. Když ji místo rebase sloučíte, dostanete merge commit, který celý efekt maří. Stejně tak pull bez --rebase vytvoří merge commit, i když jste jen aktualizovali lokální větev. Nastavte si rebase jako výchozí chování a merge používejte jen tam, kde je skutečně potřeba zachovat větevní bod, například u dlouho žijících release větví.<br><br>Historie plná merge commitů vypadá jako výpis ze špatně nastaveného nástroje. Každá drobná změna zanechá dva commity místo jednoho a při hledání regrese se v tom nikdo nevyzná. Řešením není zákaz větvení, ale rebase a fast-forward. Týmy, které to zavedly, mají lineární historii, čitelné diffy a jednodušší revert.<br><br>Bramboráky, které po vytažení z pánve doslova září olejem, nejsou otázkou náhody ani smůly. Většinou jde o souhru tří věcí: příliš mokré těsto, příliš nízká teplota tuku a příliš mnoho tuku na pánvi. Když tyto tři faktory zvládnete, smažené placky budou křupavé a na ubrousku po nich zůstane jen pár kapek.<br><br>Do prostoru před zrcadlem nepatří vysoký uzavřený botník. Otevřená lavice s úložným prostorem nebo nízká skříňka do výšky pasu nechá zrcadlo volné. Další častá chyba je věšák plný kabátů přímo proti zrcadlu – odraz pak ukazuje jen hromadu látek a efekt se ztrácí. Pokud potřebujete zavěsit více věcí, dejte je na boční stěnu, ne do osy pohledu.<br><br>Většina lidí neplýtvá potravinami proto, že by chtěla, ale proto, že nakupuje bez přehledu. Než vyrazíte do obchodu, projděte si, co doma skutečně máte. Nejde o žádný velký úklid – stačí jednou za týden otevřít spíž i lednici a podívat se, co je vzadu. Právě tam se hromadí věci, které zmizí z dohledu a pak se vyhodí. Zapište si jen to, co dochází, ne celý seznam. Nákupní seznam psaný zpaměti vede k duplicitám: doma jsou už dvě rýže a vy nesete třetí.<br><br>Na dno květináče nedávejte vrstvu keramzitu jako „drenáž". Výzkumy i praxe ukazují, že voda se v těžké zemině nad keramzitem drží a hladina se zvedá výš, než kdyby tam vrstva nebyla. Keramzit má smysl jen jako součást substrátu, kde vytváří vzduchové kapsy. Drenážní vrstvu nahraďte kvalitní směsí a květináčem s otvorem.<br><br>Druhá chyba je squashing všeho do jednoho commitu. Historie je sice krátká, ale ztratíte kontext. Lepší je interaktivní rebase s git rebase -i main, kde spojíte jen logické celky a opravíte zprávy. Commit, který dělá tři nesouvisející věci, rozdělte. Naopak pět commitů typu „oprava překlepu" slijte. Cílem není minimální počet commitů, ale to, aby každý šel samostatně pochopit a případně revertovat.<br><br>Pro chodbu je ideální „překážková linka" z barevných papírů nebo švihadel položených na zem. Děti procházejí bosky nebo v ponožkách, našlapují jen na určené barvy, mezitím plní krátké úkoly – vyjmenovat tři ovoce, udělat dva poskoky, zopakovat rytmus. Tato hra nutí k soustředění a zároveň protáhne chodidla. Pozor na kluzkou podlahu: předem ji zkontrolujte a odstraňte případné klacky nebo hračky, které tam zůstaly po jiné činnosti.<br><br>Poslední věc je ochrana hlavní větve na serveru. Zapněte pravidlo, které odmítne merge commit i force push. Bez toho se dřív nebo později někdo vrátí ke starému zvyku a historie se opět rozbije. Když to nejde na serveru, přidejte alespoň kontrolu do CI, která merge commity v cílové větvi odmítne. Tým si na lineární historii zvykne během pár dní a zpětné hledání chyb bude výrazně rychlejší.

Aktualna wersja na dzień 14:02, 18 wrz 2026

Kde se to nejčastěji pokazí První chyba je rebase už pushnuté větve, kterou má někdo jiný staženou. Force push přepíše historii a kolegovi vzniknou duplicitní commity nebo konflikty. Pravidlo je jednoduché: rebasujte jen to, co jste ještě neposlali do sdílené větve. Pokud už pushnutá větev rebase potřebuje, použijte --force-with-lease, které selže, když někdo mezitím pushnul. Nikdy nepoužívejte --force naslepo.

Základem je nastavit, aby se při merge do hlavní větve nevytvářel merge commit. V Gitu to zařídí git config --global pull.rebase true a git config --global merge.ff only. Tím se lokální pull vždy přehraje a merge bez fast-forward selže. Pro vzdálenou větev si nastavte git config branch.main.mergeOptions "--ff-only". Kdo potřebuje sloučit delší větev, udělá rebase ručně: git rebase main na své větvi, vyřeší konflikty a pak teprve pushne.

Zvláštní pozornost věnujte merge z hlavní větve do své. Když ji místo rebase sloučíte, dostanete merge commit, který celý efekt maří. Stejně tak pull bez --rebase vytvoří merge commit, i když jste jen aktualizovali lokální větev. Nastavte si rebase jako výchozí chování a merge používejte jen tam, kde je skutečně potřeba zachovat větevní bod, například u dlouho žijících release větví.

Historie plná merge commitů vypadá jako výpis ze špatně nastaveného nástroje. Každá drobná změna zanechá dva commity místo jednoho a při hledání regrese se v tom nikdo nevyzná. Řešením není zákaz větvení, ale rebase a fast-forward. Týmy, které to zavedly, mají lineární historii, čitelné diffy a jednodušší revert.

Bramboráky, které po vytažení z pánve doslova září olejem, nejsou otázkou náhody ani smůly. Většinou jde o souhru tří věcí: příliš mokré těsto, příliš nízká teplota tuku a příliš mnoho tuku na pánvi. Když tyto tři faktory zvládnete, smažené placky budou křupavé a na ubrousku po nich zůstane jen pár kapek.

Do prostoru před zrcadlem nepatří vysoký uzavřený botník. Otevřená lavice s úložným prostorem nebo nízká skříňka do výšky pasu nechá zrcadlo volné. Další častá chyba je věšák plný kabátů přímo proti zrcadlu – odraz pak ukazuje jen hromadu látek a efekt se ztrácí. Pokud potřebujete zavěsit více věcí, dejte je na boční stěnu, ne do osy pohledu.

Většina lidí neplýtvá potravinami proto, že by chtěla, ale proto, že nakupuje bez přehledu. Než vyrazíte do obchodu, projděte si, co doma skutečně máte. Nejde o žádný velký úklid – stačí jednou za týden otevřít spíž i lednici a podívat se, co je vzadu. Právě tam se hromadí věci, které zmizí z dohledu a pak se vyhodí. Zapište si jen to, co dochází, ne celý seznam. Nákupní seznam psaný zpaměti vede k duplicitám: doma jsou už dvě rýže a vy nesete třetí.

Na dno květináče nedávejte vrstvu keramzitu jako „drenáž". Výzkumy i praxe ukazují, že voda se v těžké zemině nad keramzitem drží a hladina se zvedá výš, než kdyby tam vrstva nebyla. Keramzit má smysl jen jako součást substrátu, kde vytváří vzduchové kapsy. Drenážní vrstvu nahraďte kvalitní směsí a květináčem s otvorem.

Druhá chyba je squashing všeho do jednoho commitu. Historie je sice krátká, ale ztratíte kontext. Lepší je interaktivní rebase s git rebase -i main, kde spojíte jen logické celky a opravíte zprávy. Commit, který dělá tři nesouvisející věci, rozdělte. Naopak pět commitů typu „oprava překlepu" slijte. Cílem není minimální počet commitů, ale to, aby každý šel samostatně pochopit a případně revertovat.

Pro chodbu je ideální „překážková linka" z barevných papírů nebo švihadel položených na zem. Děti procházejí bosky nebo v ponožkách, našlapují jen na určené barvy, mezitím plní krátké úkoly – vyjmenovat tři ovoce, udělat dva poskoky, zopakovat rytmus. Tato hra nutí k soustředění a zároveň protáhne chodidla. Pozor na kluzkou podlahu: předem ji zkontrolujte a odstraňte případné klacky nebo hračky, které tam zůstaly po jiné činnosti.

Poslední věc je ochrana hlavní větve na serveru. Zapněte pravidlo, které odmítne merge commit i force push. Bez toho se dřív nebo později někdo vrátí ke starému zvyku a historie se opět rozbije. Když to nejde na serveru, přidejte alespoň kontrolu do CI, která merge commity v cílové větvi odmítne. Tým si na lineární historii zvykne během pár dní a zpětné hledání chyb bude výrazně rychlejší.