(不過以下的流程只適合在 local repository 做,一旦上傳到 public repository,就不適合再 rebase 了!)
首先我們要知道過去的 commit 記錄:
$ git log # 先看每一個 commit 的 log 與 sha1 編號
假設我們要把 branch1 的 commitA..commitB 的 commits 合併起來,我們就這樣做(以下的 commitA 與 commitB 皆是指這二個 commit 的 sha1 編號):
$ git checkout commitB # 先回到過去某個 commit
$ git reset --soft commitA # 修改 working directory 的 commit index
$ git commit --amend # 更新 commit 訊息與時間 (合併 commitA..commitB)
$ git tag tmp # 記錄合併後的 commit 的 sha1 編號(你直接記 sha1 編號也是可以)
$ git checkout branch1 # 回到原本 branch 的 HEAD
$ git rebase --onto tmp commitB
# 把 commitB 之前的 commit history 換成合併之後的 commit。
$ git tag -d tmp # 刪除暫時的 tag
--
資料來源:
How do I combine the first two commits of a Git repository?