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 experimentVý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 masterTyto 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 experimentalVý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.