git fixup & autosquash 加快 commit 整理速度

在提交程式碼的時候,總會用 rebase -i 來整理還沒推送出去的 branch,像是錯字或是 coding style 之類的小錯誤,以往總是:

  1. git commit "fixup xxxxx" 自己標記一個 fixup 的 commit
  2. git rebase -i xxxxx
  3. 手動調整順序,把 pick 改成 fixup
  4. 儲存完成 rebase

現在可以利用 git commit --fixup & git rebase -i --autosquash 來自動化這些動作,減少人為的錯誤,加快整理的速度。

Example

  1. 有一個 commit log log.png

  2. 發現 BBB 檔案有錯要做修正,git commit --fixup [commit] fixup.png

  3. 此時的 commit log,有標記 fixup! log-2.png

  4. git rebase -i --autosquash @~3 autosquash.png

  5. 會自動調整順序,和改變為 fixup rebase.png

  6. 儲存完成 rebase

預設開啟 --autosquash

$ git config --global rebase.autosquash true

之後只要 git rebase -i 時,預設使用 --autosquash 參數

References

Auto-squashing Git Commits