Řešení konfliktů při rebase a cherry-pick v týmovém vývoji
Rebase a cherry-pick patří mezi nejčastější operace, které v týmovém vývoji vyvolávají konflikty. Na rozdíl od merge, který vytváří nový commit a historii zachovává, rebase přepisuje existující commity a cherry-pick přenáší jednotlivé změny do jiné větve. Právě proto je třeba mít předem jasná pravidla, kdo a kdy tyto operace provádí. Bez nich vzniká zbytečný chaos a ztracená práce.
Základem je krátkodobé větve a časté synchronizace s hlavní linií. Pokud vývojář pracuje na feature branch příliš dlouho, každý rebase na main přináší desítky konfliktů najednou. Řešení je jednoduché: rebasujte průběžně, ideálně po každém dokončeném menším celku. Při samotném řešení konfliktů se vyplatí otevřít si obě verze souboru a rozhodnout se vědomě, nikdy ne slepě přijmout jednu stranu. Pomůže také Git workflow pro týmovou spolupráci, který popisuje osvědčené postupy větvení a slučování. Když konflikt nastane, je lepší ho vyřešit hned a commitnout s jasnou zprávou, než ho odkládat na později.
Cherry-pick je užitečný nástroj pro přenos oprav z jedné větve do druhé, ale v týmu se snadno zvrhne v noční můru. Pokud někdo vybírá commity bez kontextu, vznikají duplicitní změny a konflikty při dalším mergi. Platí zásada: cherry-pickujte pouze atomické commity, které nedávají smysl jen samy o sobě. Před samotným příkazem si vždy ověřte, zda cílová větev neobsahuje stejnou změnu jinou formou. Konflikt při cherry-picku se řeší stejně jako u rebase, ale s vědomím, že výsledný commit bude mít nový hash a může se rozejít s původní větví.
Aby se konfliktům předcházelo, je klíčová komunikace. Vědět, kdo na čem pracuje a které soubory se mění, snižuje riziko překryvu na minimum. Používejte pull requesty s povinným review a nastavte ochranu hlavní větve proti přímému pushi. Při řešení konfliktů se nebojte zavolat kolegovi, někdy stačí krátká konzultace a problém je vyřešen za pět minut. Rebase a cherry-pick nejsou nepřátelé, jen nástroje, které vyžadují disciplínu a respekt k historii ostatních.