Mám 2 větve, větev master a experiment. Stav repozitáře vypadá takto:
Naším cílem je dostat změny z větve experiment do masteru. Mužů použít merge, ale to nám vytvoří v merge commit kterému se chceme vyhnout. Použití merge vypadá takto:
git checkout master
git merge experiment
Výsledkem bude:
Tento výsledek nechceme, chceme mít historii lineární, proto před použitím merge uděláme rebase přeskládání větve experimental na větev master.
Uděláme to takto (vycházíme z výchozího stavu projektu, pokud jsme již vytvořili merge commit, můžeme jej vrátit příkazem git reset --hard HEAD~1
):
git checkout experimental
git rebase master
Tyto příkazy nám přeskládají větev experimental do této podoby:
Pak už jen stačí použít fast-forward merge a větev experimental máme začleněnou do masteru:
git checkout master
git merge –-ff-only experimental
Výsledek pak vypadá takto:
Ondřej Šika
Jsem freelance DevOps konzultant a lektor. Zlepšuji práci vývojářských týmu zaváděním efektivních procesů ve vývoji. Naučím Vás používat prověřené nástroje a technologie, které povedou k rychlejšímu vývoji a bezpečnějšímu provozu vašeho software.