Git:如何在rebase之后进入SVN分支?

时间:2010-02-17 17:22:11

标签: git branch git-svn rebase

我的SVN分支有问题。 我用git checkout -t -b stable svn/stable结帐了。 然后我与git rebase master合并。 之后,我尝试使用git svn dcommit

将合并更改提交到远程分支

但现在看来,Git将更改推送到主干而不是分支:(

git status告诉我:

# On branch stable
# Your branch and 'svn/stable' have diverged,
# and have 218 and 52 different commit(s) each, respectively.
#
# Untracked files:
#   (use "git add <file>..." to include in what will be committed)
...

有人知道我做错了什么,怎么做对了?

2 个答案:

答案 0 :(得分:2)

我最近遇到了同样的错误。当你重新掌握它时,它首先将当前分支硬重置为master,然后应用提交合并到它。但是您的主分支与svn/trunk相关联,因此新重置的分支也与它相关联。因此git-svn上的dcommit认为提交已经“插入”svn/trunk

解决方案是使用git merge --no-ff代替git rebase。或者使用Subversion本身的合并功能。

答案 1 :(得分:0)

现在它有效,我这样做了:

   git checkout master
   git svn rebase
   git checkout --track -b svn_stable svn/stable
   git merge --squash master
   git commit -m "Bring stable up-to-date with trunk" 
   git svn dcommit --dry-run
   git svn dcommit

合并比使用冲突处理的rebase容易得多。

在这次尝试中,我忘记使用--no-ff,这会强制每次合并提交,对吗?

感谢您的帮助:)