我有以下设置
svn repository
application
|
|-branches
| |
| |-develop-svn
|
|-trunk
本地git存储库
master
|
|-develop
master track remotes / trunk
开发track remotes / develop-svn
由于某种原因,开发停止跟踪develop-svn。
当我从主人结账时,我得到以下信息。
$ (master) git checkout develop
Switched to branch develop
Your branch is ahead of 'develop-svn' by 59 commits.
当我尝试提交到svn存储库时,它会尝试更新远程主干。
$ (develop) git svn dcommit -n
Committing to https://servername/svn/application/trunk ...
...
过去曾致力于https://servername/svn/application/branches/develop-svn
我已经尝试过这个命令,但没有帮助:
$ (master) git branch --set-upstream develop develop-svn
Branch develop set up to track local refs/remotes/develop-svn.
$ (master) git checkout develop
Switched to branch develop
Your branch is ahead of 'develop-svn' by 59 commits.
$ (develop) git svn dcommit -n
Committing to https://servername/svn/application/trunk ...
...
我的配置看起来像这样
[svn-remote "svn"]
url = https://servername/svn/application
fetch = trunk:refs/remotes/trunk
branches = branches/*:refs/remotes/*
tags = tags/*:refs/remotes/tags/*
答案 0 :(得分:5)
According to Pro Git,git svn dcommit
根据历史记录中最新的svn-id
决定要推送到哪个Subversion分支。 git svn documentation解释了这是通过返回每个实例中第一个父项之后的历史记录来完成的:
如果您合并,请注意以下规则:
中指定的SVN提交之上提交git svn dcommit
将尝试在
git log --grep=^git-svn-id: --first-parent -1
因此,您必须确保要提交的分支的最新提交是合并的第一个父级。否则会出现混乱,特别是如果第一个父级是同一SVN分支上的旧提交。
(我相信你会注意到,svn-id
以一个指向trunk
或svn-develop
或其他任何内容的网址开头。)
所以,如果你在你所在的分支上尝试该命令,它是否找到了你期望的提交?或者,您是否可能以某种方式进行重新定位或合并,从而使最近的git svn
提交(在上面的意义上)来自Subversion中的trunk
而不是develop-svn
分支?