Git: Rebase Squash vs Fixup
04 Jun 2018打指令 git rebase -i <sha-1>
後可進入互動介面,為提交紀錄換順序、編輯訊息或做合併。其中 squash 和 fixup 的差異是什麼呢?
- squash:保留這個提交紀錄(commit),但要跟前一個提交紀錄合併,並保留這個提交訊息(message)。因此,如下圖,會有「點點點」的部分,可以打開來看被保留的提交訊息。
- fixup:與 squash 大致相同,雖然也是跟前一個提交紀錄合併,但差異是只使用前一個提交訊息,並捨棄這個提交訊息。也就是說,沒有「點點點」可以打開來看了。
上圖有兩個提交記錄,上、下分別使用 squash、fixup
- 第一個提交紀錄是使用 squash,可以看到右邊的「點點點」表示有訊息被保留,打開來就可以看到合併提交紀錄後被保留的訊息。下面的小字「add p8」是打開後的保留訊息。
- 第二個提交紀錄是使用 fixup,沒有「點點點」可以打開來看合併提交紀錄後被保留的訊息。