Kdy je lepší rebase než merge commit?
První rozhodnutí se týká prostoru. Doma máte jistotu, že vám neprší do papírků, ale jste omezeni místnostmi a nábytkem. Na zahradě získáte přirozené krytí v keřích, pod stromem nebo za kůlnou, počítat s větrem, rosou a vlhkostí. Obecné pravidlo: úkoly, které se mají luštit vsedě, patří dovnitř, pohybové a hledací úkoly ven. Kombinace funguje nejlépe – začněte doma, pokračujte na zahradě a poslední indicii vraťte zpět do domu, aby hra měla jasný konec.
Slábnoucí topení se projevuje nenápadně. Teplota drží, dokud je v místnosti teplo, ale jakmile se ochladí, rekonstrukce koupelny krok za krokemčne padat. Ryby jsou apatické, méně žerou, u dna se shlukují. Některé druhy přestanou reagovat na krmení. Vodní rostliny zpomalí růst. Pokud máte v nádrži dvě topení a jedno vypadne, druhé to chvíli zvládne, ale teplota se stejně rozkolísá. Všímejte si hlavně toho, jestli se teplota po výměně vody vrací na původní hodnotu dost rychle – slabé topení to nezvládne.
Hladký pistáciový krém vzniká ze dvou věcí: správně namleté pasty a správně našlehané základní směsi. Většina neúspěchů není o receptu, ale o technologii. Pistácie musí být opravdu jemné, jinak krém zůstane zrnitý a při nanášení se trhá. Základ tvoří máslo, cukr a vejce, případně smetana; poměry se liší podle toho, zda chcete krém do dortu, nebo na zdobení.
Základem je nastavit si větve tak, aby hlavní větev (obvykle main nebo master) přijímala pouze fast-forward. To zařídíte buď v nastavení repozitáře, nebo lokálně příkazem git config --global pull.ff only. Při sloučení pak použijte git merge --ff-only, případně git rebase main na své vývojové větvi. Tím se vaše commity přenesou na aktuální konec hlavní větve a žádný merge commit nevznikne.
V raftu není čas hledat ideální postoj. Sedněte aktivně: chodidla pevně v poutech nebo pod palubou, kolena mírně od sebe, pánev podsazená, hrudník vysoko, hlava v prodloužení páteře. Nepředklánějte se rekonstrukce koupelny krok za krokem pádlem dozadu přes bok lodi. Když pádlujete, pohyb vychází z rotace hrudníku, ne z ohýbání beder. Typická chyba je záběr celým tělem vpřed jako při veslování na trenažéru. Tím se páteř ohne a stačí jeden náraz do kamene, aby přišel výhřez.
Před praním vždy zkontrolujte etiketu, ale i když tam stojí 40 °C, u záclon a jemných závěsů volte raději 30 °C. Silné znečištění předem ošetřete: ubrusy namočte na 20 minut do vlažné vody s trochou pracího prostředku, závěsy krátce předeperte v ruce. Skvrny od vína nebo kávy nikdy nezažehlujte a netřete násilím – rozetřete je do okolí a pak teprve perte. Bílkovinné skvrny (mléko, vejce) odstraní enzymatický prostředek, tuk zase prostředek s vyšším pH.
Nejčastější chyba je rebase větve, kterou už mají ostatní. Druhá častá chyba je zapomenutý git push --force místo git push --force-with-lease. Force push přepíše vzdálenou větev bez ohledu na to, co mezitím udělali kolegové. Force-with-lease ověří, že vzdálená větev je stále ve stavu, který očekáváte, a push odmítne, pokud někdo mezitím přidal commit. Vždy používejte variantu s lease.
Poslední věc: domluvte se v týmu na jednotném postupu. Někdo může preferovat merge commity, jiný rebase. Bez dohody vznikne zmatek. Sepište si krátký návod, který popíše, kdy rebasovat, kdy merge a jak řešit konflikty. Ušetříte si hodiny dohledávání, proč historie vypadá, jak vypadá.
Pro sloučení hotové práce do hlavní větve použijte fast-forward merge. Na hlavní větvi stačí git merge --ff-only vase-vetev. Pokud to selže, znamená to, že hlavní větev má commity, které ve vaší větvi nejsou. Pak je čas na rebase. Některé týmy místo merge používají squash: všechny commity z větve se sloučí do jednoho a ten se fast-forwardem připojí. Výsledkem je čistá historie, ale přicházíte o dílčí commity. Hodí se to u malých oprav, ne u rozsáhlých funkcí.
Jak rebase bezpečně provádět Rebase přepisuje historii. To je výhoda i past. Nikdy nerebasujte commity, které už někdo jiný stáhl k sobě. Platí to zejména pro hlavní větev. Pokud pracujete na své lokální větvi, můžete rebase klidně opakovat. Před každým rebase si vytvořte záložní větev příkazem git branch zaloha. Když se něco pokazí, vrátíte se k ní. Běžný postup: git fetch origin, git rebase origin/main, vyřešíte konflikty, git add a git rebase --continue. Pokud chcete rebase přerušit, použijte git rebase --abort.
Merge commity vznikají ve chvíli, kdy do větve sloučíte jinou větev a Git vytvoří nový commit se dvěma rodiči. Vypadá to neškodně, dokud se historie nezačne plnit šumem: každá drobná aktualizace z hlavní větve vygeneruje další merge commit, ve kterém se nedá dohledat skutečná změna. Řešením je udržovat lineární historii pomocí rebase a fast-forward sloučení. Není to dogma, ale pro většinu týmů to výrazně zpřehlední orientaci v tom, kdo co a kdy udělal.