繁体   English   中英

在git-svn中,如何更改git分支正在跟踪的svn分支?

[英]in git-svn, how do I change the svn branch that a git branch is tracking?

我正常的git-svn工作流程是在本地分支上完成工作,然后合并到master和git svn dcommit ,以将我的提交记录到svn中继上。

但是,在我当前的本地分支( foo )中,我意识到这项工作将要进行一段时间,然后再将其提交到主干,并且在此之前可能还会有其他开发人员参与。 我想通过svn分支“支持”它,以便我的工作在服务器上。

我已经从当前主干创建了一个新的svn分支( svnFoo ),我基本上想“移动” foo以便当我从它进行svn dcommit ,其所有提交都记录在svnFoo而不是trunk

做这个的最好方式是什么?

git rebase是您的朋友在这里。 假设您是从本地master分支创建的本地foo分支,并且最近执行了git svn fetch以便您的本地Git存储库了解远程svnFoo分支,那么您想要的魔术命令是:

git rebase --onto remotes/svnFoo $(git merge-base master foo) foo

这将找到您从master分支foo的提交,并从那里重播所有提交到svnFoo分支顶部的foo分支的头部。 随后的git svn dcommit将提交到Subversion svnFoo分支而不是主干。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM