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.