Middle
Jak ve vaší společnosti probíhá slučování větví (merge) nebo přepisování historie (rebase) v systému správy verzí?
sobes.tech AI
Odpověď od AI
V našem týmu dodržujeme pracovní tok založený na Git. Pro integraci změn používáme dva hlavní přístupy: merge a rebase, vybíráme je podle situace a typu větve.
Merge:
- Obvykle se používá k sloučení dlouhodobých větví, například dev do main, nebo k integraci funkcí do dev.
- Vytváří commit sloučení, který jasně ukazuje, kdy došlo ke sloučení změn z jiných větví.
- Zachovává celou historii commitů, včetně všech větvení.
git checkout dev // Přepnutí na cílovou větev
git merge feature/nova-funkce // Sloučení větve funkce
Rebase:
- Používá se k udržení čisté a lineární historie commitů ve větvích funkcí až do jejich integrace (obvykle v dev).
- Přesouvá commity aktuální větve na vrchol cílové větve (dev), efektivně "přepisujíc" historii.
- Zjednodušuje historii, vyhýbá se commitům merge pro každou malou funkci nebo opravu.
- Důležité: Nikdy neprovádějte rebase na veřejných větvích, na kterých pracují jiní vývojáři, protože to může způsobit konflikty při pullování změn.
git checkout feature/nova-funkce // Přepnutí na větev funkce
git rebase dev // Přesunutí commitů větve funkce na vrchol dev
// Pokud je třeba, řešíme konflikty
git push --force-with-lease // Používáme --force-with-lease pro bezpečný push po rebase
Náš standardní pracovní tok:
- Nová funkce nebo oprava je vyvíjena v samostatné větvi (feature/..., fix/...).
- Občas (před pull requestem nebo pro synchronizaci s dev) je větev funkce rebaseována na aktuální verzi dev. To pomáhá řešit konflikty v rané fázi.
- Po dokončení vývoje a revizi kódu je větev funkce sloučena do
devsno-ff(non-fast-forward), aby se zachovala informace o sloučení. Nebo, méně často, je squashována do jednoho commitu před sloučením dodevpro velmi malé funkce nebo opravy. - Z
devjsou pravidelně vydávány verze domain(produkční větev), vždy pomocí merge.
Tímto způsobem vyvažujeme zachování historie commitů (merge) s udržením čisté vývojové větve (rebase větví funkcí).