我已经克隆了一个复制的svn仓库(使用svnsync到本地文件系统)。现在,所有的分支等都可以在git中使用。现在我想开始在svn分支上工作。
git checkout remotes/B_XYZ
现在我正在使用git进行一些提交,但是我想要切换到不同的SVN分支。
git checkout remotes/B_ABC
并且还需要做一些更改。
现在最终的问题是:是否可以将我在分支上(在git中)所做的更改提交回适当分支上的原始Subversion仓库中?
经过一些实验,我找到了如何提交到新的仓库,而不是复制的仓库。
git svn dcommit --commit-url URL/branches/BRANCHNAME
使用上述命令,我可以将在Git中所做的更改提交到新的svn存储库中。
git svn dcommit
不能工作了吗?如果您将SubGit安装到您的SVN存储库中并使用它而不是git-svn,则可以实现。它将为您创建一个纯Git存储库(而不是git-svn存储库!),因此对其进行任何推送都将导致SVN提交,反之亦然(由钩子触发)。任何新分支推送都将在SVN中创建一个分支,任何标签推送都将创建一个标签。
唯一的限制是您应该能够访问您的SVN存储库,但看起来这正是您的情况。
要执行此操作,请运行
$ subgit install path/to/svn/repostiory
链接的 Git 存储库将位于 path/to/svn/repostiory/.git。
git svn
集成(实际上与真正的svn
仓库通信,而不是副本),然后使用git cherry-pick
将更改复制到其中。 - Hank Gay