Bắt đầu với repo ở trạng thái ban đầu
Để loại bỏ cam kết hợp nhất và tách nhánh thành một cam kết duy nhất trong dòng chính
Sử dụng các lệnh này (thay thế 5 và 1 bằng SHA của các cam kết tương ứng):
git checkout 5
git reset --soft 1
git commit --amend -m '1 2 3 4 5'
git rebase HEAD master
Để giữ lại một cam kết hợp nhất nhưng bỏ nhánh cam kết thành một:
Sử dụng các lệnh sau (thay thế 5, 1 và C bằng SHA của các cam kết tương ứng):
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
Để loại bỏ cam kết hợp nhất và thay thế nó bằng các cam kết riêng lẻ từ nhánh
Chỉ cần làm (thay thế 5 bằng SHA của cam kết tương ứng):
git rebase 5 master
Và cuối cùng, để loại bỏ hoàn toàn nhánh
Sử dụng lệnh này (thay thế C và D bằng SHA của các cam kết tương ứng):
git rebase --onto C D~ master