Rozpoczynając od repozytorium w stanie pierwotnym
Aby usunąć merge, zatwierdzić i zgnieść gałąź do pojedynczego zatwierdzenia w głównej linii
Użyj tych poleceń (zastępując 5 i 1 wartościami SHA odpowiednich zatwierdzeń):
git checkout 5
git reset --soft 1
git commit --amend -m '1 2 3 4 5'
git rebase HEAD master
Aby zachować zatwierdzenie scalające, ale zgnieść zmiany gałęzi w jedną:
Użyj tych poleceń (zastępując 5, 1 i C wartościami SHA odpowiednich zatwierdzeń):
git checkout -b tempbranch 5
git reset --soft 1
git commit --amend -m '1 2 3 4 5'
git checkout C
git merge --no-ff tempbranch
git rebase HEAD master
Aby usunąć zatwierdzenie scalające i zastąpić je indywidualnymi zatwierdzeniami z gałęzi
Po prostu zrób (zastępując 5 wartością SHA odpowiedniego zatwierdzenia):
git rebase 5 master
I wreszcie, aby całkowicie usunąć gałąź
Użyj tego polecenia (zastępując C i D SHA odpowiednich zatwierdzeń):
git rebase --onto C D~ master