Fork me on GitHub

2/09/2012

[Git] How to combine multiple commits to only one patch

one commit for one goal 是一個好習慣,不過往往會在 local branch 新增許多 commits。等到 feature 完成,有時候會希望可以將這些 commits 全部整理成一個 patch,方便 forward 給別人 或是 apply 回 master branch,這時該怎麼做呢?

假設你從 branch master checkout 一出一個 branch feature 做開發,然後在 branch feature 上面提交了一些 commits。現在你希望將這些 commits 弄成一個單一的 patch,然後 apply 到 branch master 上面。

首先,先回到 branch master,建立一個跟 master 一樣的 temp branch tmpsquash

git checkout -b tmpsquash

在 branch tmpsquash 上以 --squash 的方式 merge 到 branch feature

git merge --squash feature

於是你就會看到,branch feature 那些 commits 的內容全變成了 branch tmpsquash 的 diff。這時候你就可以把它弄成一個 commit。

git commit -a -m "My squashed commits"

最後,將他打包成一個 patch

git format-patch master

Reference

  1. How do you squash commits into one patch with git format-patch?

-- EOF --

No comments:

Post a Comment