Git Rebase-把多個 commit 合成一個 commit

想要乾淨的紀錄就靠它。

簡述

假設目前的紀錄長這樣:

example

我想要把 BCD 這三個 commit 合成一個,那我可以用 rebase 來處理。

首先會下的指令是:git rebase -i <基準點>

-i 是代表使用「互動模式(interactively)」的意思,而 <基準點> 是用來告訴 Git 我們想要「從目前 HEAD 的位置到哪一個基準點」來做 rebase 的動作。

像底下這個指令:

1
git rebase -i 9f9d48d

轉換成白話文的意思是:

我想要對 HEAD (265a5ac) ~ A (9f9d48d) 這個範圍做 rebase 的動作。

設定完以後就會進入互動模式的編輯畫面(vim):

example-vim

附註:注意這邊的閱讀順序是由上到下(舊到新)

基本上 pick 就是原封不動保留下來的意思,而這邊主要會用的是 s (squash) 這個指令。他的用途是把「目前的這個 commit 跟前一個合在一起」,所以我們會這樣設定:

example-squash

附註:squash 其實是指「擠、捏」的這個動作

首先把 DC 合在一起,接著再把併好的 CDB 合在一起,最後就會變成同時有 B C D 的新 commit 紀錄。

最後存檔並設定好新的 commit message 以後就可以看到我們想要的結果囉:

example-result

Git Rebase-把單個 commit 拆成多個 commit Git Rebase-合併分支
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×