如何使用git svn仅拒绝选定的补丁?

Vil*_*ari 10 git-svn

我在我的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/

如果你很舒服,那么它的效果非常好.


Vil*_*ari 5

这就是我最终做的事情.起点是与svn同步的"master"分支,我的所有本地补丁都在顶部.

  1. 创建一个新分支(wip =正在进行中).

    git branch wip 
    
    Run Code Online (Sandbox Code Playgroud)

    这会生成当前分支的副本,包括尚未提交给svn的所有补丁.当前分支将保持为"主"并且不会更改.

  2. 使用rebase从"master"中删除不需要的本地补丁:

    git rebase -i HEAD~10
    
    Run Code Online (Sandbox Code Playgroud)
  3. 现在"master"分支有你可以安全提交的补丁:

    git svn dcommit
    
    Run Code Online (Sandbox Code Playgroud)

    "wip"分支现在有了重大变化,尚未准备好分享.实际上,我希望他们留在那里,这就是我要停下来的地方.一切都完成后,可以从"wip"分支执行svn dcommit.但为了完整起见,并回答原始问题,还有最后一步:

  4. 将未提交的更改拉回"master"分支git cherry-pick,最后删除无用的分支git branch -d wip.