我有一个很大的问题混帐的svn:我只是需要把我的git回购到SVN服务器,所以我做了如下混帐SVN dcommit没有发现变化和复位头
svn mkdir --parents http://host/path/to/repo/{trunk,tags,branches} \
-m "Standard layout for $project"
git svn init -s http://host/path/to/repo/
git svn fetch
git rebase trunk master
git svn dcommit
这个工作很棒,一切都在git和svn上!
现在我得到消息说我的git master分支是31提交在origin/master后面,所以我做了一个git pull。 现在我改变了一些东西在我的回购(basicily它的Eclipse项目)并提交它。现在我想也是推动它的SVN回购,并提出了 混帐SVN dcommit 但那不是工作:
Committing to https://..../trunk ...
No changes
38b194cb2860b8bb73924cb05f9830dbdb70cf82~1 == 38b194cb2860b8bb73924cb05f9830dbdb70cf82
No changes between current HEAD and refs/remotes/trunk
Resetting to the latest refs/remotes/trunk
Unstaged changes after reset:
M Product/Abgabe.tex
Unable to extract revision information from commit daf483ad1333f3589386b87054f4c27fb7ff23cf~1
我做错了什么?主现在reseted之前提交,现在我需要git checkout -- Abgabe.tex
和git pull
到这里有正确的版本...
编辑:如果我做了git svn rebase
,我为每一个提交冲突的一个长长的清单,所以我做git rebase --skip
到底,然后dcommted,这是工作,但它似乎是一个血腥黑客:/
MH是的,它似乎所以......好的,然后我发现了这个问题:如果我在不同的主机上使用git并将其推送到repo并且必须合并分支,那么svn分支与非线性历史有关。现在我必须重新分配......但是那在屁股疼痛!当我想再次推动git时,我需要首先拉我的git历史记录,然后再次将其重新转换为svn版本... – reox
我通常在master上执行'git svn rebase',然后'git checkout -b feature_branch'。一旦我准备上传到svn服务器,我将在'git checkout master'然后'git svn rebase',然后'git merge feature_branch',然后'git svn dcommit'完成我在功能分支中的所有工作。 – Joe
@Joe。链接现在被打破了,但是git svn rebase就是诀窍。谢谢。 – JackMorrissey