Git-SVN合并丢失了我到trunk的链接

时间:2012-02-09 18:34:23

标签: git git-svn

编辑:我看到之前已经问过这个问题! git-svn: reset tracking for master拥有正确权限的人可能会将其作为副本关闭。

我正在使用git-svn。我最近完成了一个跟踪SVN分支的git分支。在分支机构工作时,我使用了以下两个命令

$ git svn rebase
$ big svn dcommit

一切都很好。 git中的“master”跟踪svn / trunk,git中的“myBranch”跟踪svn / branches / myBranch。但是我在git中本地合并了所有内容

$ git checkout master
$ git merge myBranch

我去推...并假设主人会推送到svn / trunk。但事实并非如此。相反,“master”现在也推送到svn / branches / myBranch。不知何故,当我将“myBranch”合并为“master”时,“master”的跟踪被改变了。

我可能做错了 - 但我试图明确地“推”到行李箱......

$ git svn dcommit remotes/trunk master

但是语法失败了,现在我已经

$ Committing to http://<repo>/trunk ...
dcommitted on a detached HEAD because you gave a revision argument.
The rewritten commit is: b461234...

SVN中继仍未更新。

如何合并git然后将其推送到SVN?我遵循指南here,这意味着我可以与普通的git语法合并。它只是没有跟进并解释为什么我的“主人”没有跟踪我合并的分支。

我也有git-tower我与命令行并行使用,在我手动合并之后,塔现在“显示”下拉列表中的所有远程分支“推”或dcommit,但我无法改变svn / myBranch中的选择...这可能暗示我不能?

2 个答案:

答案 0 :(得分:0)

如果master正在跟踪您的svn遥控器,您可以这样做:

git svn dcommit

当你在master时。使用--dry-run查看您的提交确定的位置!如果它已损坏,您可以修改.git/config并修正svn-remote条目:

[svn-remote "svn"]
     url = svn+ssh://some.machine.net/svn/path/to/tree
     fetch = trunk:refs/remotes/trunk

或者不管它需要什么。

答案 1 :(得分:0)

不,你不能将git合并提交给Subversion。

从您提供的链接阅读关于branching issues with git svn的这一段:

  

当您对Git工作流感到满意时,您可能会创建主题分支,对它们进行操作,然后将它们合并。如果您通过git svn推送到Subversion服务器,您可能希望每次将您的工作重新分配到一个分支而不是将分支合并在一起。偏好重新定位的原因是Subversion具有线性历史并且不像Git那样处理合并,因此在将快照转换为Subversion提交时,git svn仅跟随第一个父级。

     

在具有合并历史记录的分支上运行dcommit工作正常,但是当您查看Git项目历史记录时,它没有重写您在实验分支上提交的任何提交 - 相反,所有这些更改都出现在SVN中单合并提交的版本。

     

当其他人克隆该工作时,他们所看到的只是合并提交,所有工作都被压扁了;他们没有看到关于它来自何处或何时提交的提交数据。