2011-03-15 101 views
1

我下面这个模式在我的代码,以检查在功能分支Subversion和混帐的svn:的git - svn的:保持一个合并后提交的svn变基

git checkout master 
git svn rebase 
git checkout feature-branch 
git rebase master 
git checkout master 
git merge --no-ff feature-branch 
git commit --amend 
git svn dcommit

(主是我的远程颠覆跟踪分支)

这会在master上创建一个合并提交(无论我在功能分支上做了多少个git提交),我可以在Subversion中进行检查。

但是,在我将功能分支合并到主设备后,有人检查代码到Subversion中,当我执行命令git svn rebase时,应用了新的更改,并且将每个单独的功能分支提交应用于顶层。在这一点上,我不再有一个合并提交,但我在master中的功能分支上执行的每个提交。

处理这个问题的最佳方法是什么?

+0

只是供参考,没有规则,你只有在执行dcommit时才推送一次提交。你可以一次做几个(按照你喜欢的方式清理历史记录,就像斯派克建议的那样)。 – 2011-03-19 02:40:55

回答

1

这是我如何做到这一点:

git checkout feature-branch 
git rebase -i HEAD~10 # squash commits in my editor 
git svn rebase # make sure I have the latest code 
git svn dcommit 
git checkout master 
git svn rebase # now the feature-branch squashed commit is visible on master 
1

您可以通过使用--squash选项做你想做什么:

# rebase master and then feature-branch as above 
git merge --squash feature-branch 
git commit -m "Merge from feature-branch" 
git svn dcommit 

这避免了对功能进行分支的父母你的新的提交。这听起来像多个父母混淆了git-svn。