我在我的git-svn repo中有一些本地提交的补丁,我尚未提交给我们的svn repo.正常的"git svn dcommit"会将所有这些补丁提交给svn.我只想提交一些补丁(简单的错误修复),而不是其他补丁(未经测试的重大修改).我怎么能用git svn做到这一点?
Spe*_*cer 10
我一直在这里遵循这个程序:
http://fredericiana.com/2009/12/31/partial-svn-dcommit-with-git/
如果你很舒服,那么它的效果非常好.
这就是我最终做的事情.起点是与svn同步的"master"分支,我的所有本地补丁都在顶部.
创建一个新分支(wip =正在进行中).
git branch wip
Run Code Online (Sandbox Code Playgroud)
这会生成当前分支的副本,包括尚未提交给svn的所有补丁.当前分支将保持为"主"并且不会更改.
使用rebase从"master"中删除不需要的本地补丁:
git rebase -i HEAD~10
Run Code Online (Sandbox Code Playgroud)现在"master"分支有你可以安全提交的补丁:
git svn dcommit
Run Code Online (Sandbox Code Playgroud)
"wip"分支现在有了重大变化,尚未准备好分享.实际上,我希望他们留在那里,这就是我要停下来的地方.一切都完成后,可以从"wip"分支执行svn dcommit.但为了完整起见,并回答原始问题,还有最后一步:
将未提交的更改拉回"master"分支git cherry-pick,最后删除无用的分支git branch -d wip.