git分割补丁

2015-07-17 YongHao Hu 更多博文 » 博客 » GitHub »

git

原文链接 http://yonghaowu.github.io/2015/07/17/git_split/
注:以下为加速网络访问所做的原文缓存,经过重新格式化,可能存在格式方面的问题,或偶有遗漏信息,请以原文为准。


活用git rebase -i 就可以解决绝大部分补丁整理的问题。
假如我们有以下补丁:

========= commit 03bb9a14f5ea00d51d2edc14587b37b1ab9ccf5d
Author: YongHao Hu christopherwuy@gmail.com
Date: Fri Jul 10 17:23:02 2015 +0800

msvcp110: Add tr2_sys__Unlink implementation and test.

commit 24137cd93c783ced61ca152cb4384287e6859ba4
Author: YongHao Hu christopherwuy@gmail.com
Date: Tue Jul 7 11:04:25 2015 +0800

msvcp110: Add tr2_sys__Symlink implementation and test.

commit 51702048d9ecd1dc3887a63c057761a8547ce5f6
Author: YongHao Hu christopherwuy@gmail.com
Date: Thu Jul 2 23:23:51 2015 +0800

msvcp110: Add tr2_sys__Link implementation and test.

===========

假设我们想要分割 msvcp110: Add tr2_sys__Unlink implementation and test.这个commit,可以直接使用
git rebase -i HEAD~7(数字随意,反正在Unlink这个commit前就可以了),选择Unlink这个commit,
改成edit。
一般情况下,就是这样修改commit的,修改后再git rebase --continue.

但是,我们需要的是分割补丁:
选择git rebase HEAD^,撤销这次commit,再把想改动的文件git add, 再git commit,这样就可以分割很多补丁。

最后,git rebase --continue就可以了。