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
-- EOF --
No comments:
Post a Comment