Merge commity v gitu, které tiše rozbíjejí historii

Aus Rettungsdienst-Wiki
Zur Navigation springen Zur Suche springen


Pistáciový krém do dortů vypadá jednoduše: pasta, máslo, cukr, trochu smetany. Jenže právě tady vzniká většina problémů. Krém se buď srazí, zůstane v něm hrudky, nebo po nanesení na dort pustí vodu. Příčinou nebývá málo ingrediencí, ale špatná teplota a špatný postup. Pokud chcete opravdu hladkou konzistenci, proměna bytu musíte mít pod kontrolou tři věci: teplotu másla, teplotu pistáciové pasty a způsob, jakým je spojujete.

Pravidlo, které funguje lépe než jakýkoli syst�
Před koupí jakéhokoli dílu si udělejte půdorys s vyznačením výšek po třiceti centimetrech. Do něj zakreslete, kde dítě stojí, kde si hraje a kudy chodí. Teprve potom hledejte nábytek na míru, který se do zakresu vejde. Ušetříte tím nejen peníze za nevhodný kus, ale hlavně opakované stěhování a hádky o to, proč se do pokoje nic nevejde.

Kdy rebase škodí a kdy pomáhá Rebase je bezpečný jen na větvích, které ještě nikdo jiný nepoužívá. Jakmile větev sdílíte s kolegy, přepisování historie jim rozbije lokální kopie. Pravidlo je jednoduché: rebasujte pouze to, co ještě nebylo odesláno do sdíleného repozitáře. Už odeslané commity nechte být a raději použijte merge. Pokud už jste rebase omylem provedli na sdílené větvi, nikdy nepoužívejte git push --force, ale git push --force-with-lease, který selže, pokud někdo mezitím odeslal nové změny.

Vertikála místo podla

Podstavec a mezera pod hromadou rozhodují o výsled

Častou chybou je rebase rozpracované větve přímo na main, zatímco na ní běží otevřený pull request. Recenzenti pak ztratí kontext a musí znovu procházet všechny commity. Lepší je rebasovat až těsně před sloučením, případně použít git pull --rebase při aktualizaci své větve. Tím se vyhnete zbytečným merge commitům i při každodenní práci.

Pro tým je klíčové nastavit pravidla, ne se spoléhat na disciplínu jednotlivců. Většina platforem umožňuje zapnout povinný fast-forward merge, čímž merge commity v hlavní větvi úplně zmizí. Zároveň je vhodné zavést ochranu větve, která zakáže přímé pushování a vynutí krátké, srozumitelné commity. Historie bez merge commitů pak není jen estetická záležitost — zrychlí code review, zjednoduší hledání regresí a sníží počet konfliktů při sloučení.

Merge commity vznikají pokaždé, když sloučíte dvě větve bez rebase. Většina týmů je bere jako nutné zlo, ale v praxi zbytečně zaplňují historii, komplikují git bisect a ztěžují čtení toho, co se vlastně změnilo. Cílem není merge commity úplně zakázat, ale omezit je na případy, kdy skutečně přinášejí hodnotu — tedy při sloučení dlouho žijících větví, ne při každém dokončení interiéru malé funkce.

Další častý problém je interaktivní rebase bez rozmyslu. git rebase -i umožňuje squashovat, přesouvat a upravovat commity, ale pokud jich máte třicet, snadno ztratíte přehled. Vyplatí se rebasovat po menších celcích a průběžně kontrolovat git log --oneline --graph. Když se něco pokazí, pomůže git reflog — najdete v něm původní stav a můžete se vrátit zpět.

Základní postup je jednoduchý: než větev odešlete do hlavní linie, přepište ji na aktuální stav hlavní větve pomocí git rebase main. Tím se vaše commity přehrají na nový základ a při následném git merge už nevznikne merge commit — proběhne fast-forward. Pokud chcete mít jistotu, použijte git merge --ff-only, který sloučení odmítne, kdyby mělo vytvořit merge commit. Tento příkaz je vhodné nastavit i jako výchozí v konfiguraci pro danou větev.

When you have any kind of inquiries relating to exactly where and also the way to make use of odkaz, you are able to contact us from our internet site.