Jak hladce vyřešit konflikt při merge v Gitu
Konflikt při slučování větví patří k okamžikům, které u vývojářů vyvolávají zbytečný stres. Přitom jde o běžnou součást práce s Gitem, kterou lze zvládnout systematicky a bez ztráty času. Klíčové je nepropadat panice a místo bezhlavého přepisování souborů se nejprve podívat na to, co se vlastně stalo. Git vám vždy ukáže, které soubory jsou v konfliktu, a vy se můžete rozhodnout, zda ponechat svou verzi, verzi z druhé větve, nebo obě spojit. Rozhodující je pochopit, že konflikt není technická chyba, ale přirozený důsledek paralelní práce více lidí na stejném kódu.
Než začnete cokoli upravovat, doporučuji si ujasnit, co je cílem merge a které změny jsou pro projekt důležitější. Pokud si nejste jisti, jaké postupy celý tým používá, a chcete předejít zbytečným sporům, sáhněte po praktickém průvodci Git workflow, který vám pomůže nastavit pravidla spolupráce tak, aby ke konfliktům docházelo co nejméně. Samotné řešení konfliktu pak začněte tím, že si otevřete daný soubor a vyhledáte značky jako <<<<<<<, ======= a >>>>>>>. Tyto oddělovače vám přesně ukazují, kde začíná vaše verze, kde společný základ a kde verze z druhé větve. Čtěte obě strany pozorně a ptejte se, která logika lépe zapadá do celkového záměru.
Při samotném slučování se vyplatí jít po menších krocích a po každém vyřešeném konfliktu spustit testy. Pokud máte k dispozici nástroje pro vizuální porovnání, využijte je, protože často odhalí souvislosti, které při ručním procházení přehlédnete. Důležité je také komunikovat s kolegy, kteří na dotčeném kódu pracovali – možná zjistíte, že obě změny spolu ve skutečnosti souvisí a řešení konfliktu vyžaduje třetí, kompromisní variantu. Po dokončení merge nezapomeňte zkontrolovat výsledný stav celého projektu, nejen konfliktní soubory. Někdy se totiž může stát, že sloučením dvou zdánlivě nezávislých změn vznikne neočekávaná chyba, kterou testy neodhalí.
Prevence je vždy účinnější než řešení následků. Pokud svůj tým naučíte pravidelně si aktualizovat větve, rozdělovat práci do menších celků a psát srozumitelné commit messages, počet konfliktů se výrazně sníží. A když už k nim dojde, berte je jako příležitost lépe pochopit kód, na kterém pracujete. Vyřešený konflikt je důkazem, že se projekt vyvíjí a že spolupráce funguje. S trochou cviku a správnými návyky se z konfliktů stane rutinní záležitost, kterou zvládnete rychle a bez zbytečných emocí.