想要乾淨的紀錄就靠它。
簡述
假設目前的紀錄長這樣:
我想要把 B
、C
、D
這三個 commit 合成一個,那我可以用 rebase
來處理。
首先會下的指令是:git rebase -i <基準點>
-i
是代表使用「互動模式(interactively)」的意思,而 <基準點>
是用來告訴 Git 我們想要「從目前 HEAD 的位置到哪一個基準點」來做 rebase 的動作。
像底下這個指令:
1 | git rebase -i 9f9d48d |
轉換成白話文的意思是:
我想要對 HEAD (265a5ac) ~ A (9f9d48d) 這個範圍做 rebase 的動作。
設定完以後就會進入互動模式的編輯畫面(vim):
附註:注意這邊的閱讀順序是由上到下(舊到新)
基本上 pick
就是原封不動保留下來的意思,而這邊主要會用的是 s (squash)
這個指令。他的用途是把「目前的這個 commit 跟前一個合在一起」,所以我們會這樣設定:
附註:squash 其實是指「擠、捏」的這個動作
首先把 D
跟 C
合在一起,接著再把併好的 C
、D
跟 B
合在一起,最後就會變成同時有 B
C
D
的新 commit 紀錄。
最後存檔並設定好新的 commit message 以後就可以看到我們想要的結果囉: