git svn:在svn重新基址后保留单个合并提交
我遵循此模式将我的代码在功能分支中签入到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 切换到主分支 git-svn-rebase git签出特性分支 git重基主控器 切换到主分支 git合并--无ff功能分支 修改最后一次提交 git svn数据委员会 (master是我的远程Subversion跟踪分支) 这将在master上创建一个合并提交(不管我在featurebranch上完成了多少git提交),我可以将其签入Subversion 然而,在我将featurebranch合并到master之后,有人将代码签入Subversion,当我执行命令git svn:在svn重新基址后保留单个合并提交,git,git-svn,Git,Git Svn,我遵循此模式将我的代码在功能分支中签入到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 切换到主分支 git-svn-rebase git签出特性分支 git重基主控器
git svn rebase
时,将应用新的更改,并在上面应用featurebranch的每个提交。此时,我不再有一个合并提交,而是在master中的feature分支上执行的每个提交
处理这一问题的最佳方法是什么?以下是我的做法:
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
通过使用
--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。仅供参考,没有规则规定在执行dcommit时一次只能推送一个提交。你可以一次做几件事(就像斯派克建议的那样,按照你喜欢的方式清理历史记录之后)。