我正在使用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中的选择...这可能暗示我不能?
答案 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中单合并提交的版本。
当其他人克隆该工作时,他们所看到的只是合并提交,所有工作都被压扁了;他们没有看到关于它来自何处或何时提交的提交数据。