我正在遵循这种模式,使用git-svn检查我的代码在功能分支中的Subversion:
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是我的远程Subversion跟踪分支)
这会在master上创建一个合并提交(无论我在feature-branch上做了多少git提交),我可以检查Subversion。
但是,在我将功能分支合并到主服务器之后,有人将代码检入Subversion,当我执行命令git svn rebase
时,应用了新的更改,并且应用了功能分支中的每个单独提交。此时,我不再有单个合并提交,而是我在master中的feature-branch上执行的每次提交。
处理此问题的最佳方法是什么?
答案 0 :(得分: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 :(得分: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。