Workflow git svn:我如何避免';合并分行<;branchname>';提交消息?

Workflow git svn:我如何避免';合并分行<;branchname>';提交消息?,workflow,git-svn,Workflow,Git Svn,这是我当前的git svn工作流: git checkout -b feature master # hack commit hack commit git checkout master git svn rebase git merge feature git svn dcommit 这通常很好,git在主干上重放来自本地分支的所有提交,唯一的“丢失数据”是原始提交的时间戳,没什么大不了的 但今天看来,merge和dcommit有些不同,导致SVN repo上的提交消息只是“merge br

这是我当前的git svn工作流:

git checkout -b feature master
# hack commit hack commit
git checkout master
git svn rebase
git merge feature
git svn dcommit
这通常很好,git在主干上重放来自本地分支的所有提交,唯一的“丢失数据”是原始提交的时间戳,没什么大不了的

但今天看来,merge和dcommit有些不同,导致SVN repo上的提交消息只是“merge branch‘feature’”,可能是因为该功能“更小”,只有2到3次提交


如何避免这种情况发生,并确保来自git的所有提交和提交消息都在SVN repo上重播?

该注释应该是git合并的dcommit的结果,如“”:

换句话说,如果这三个“
msgx
”提交是直接在master上完成的,那么它们将在svn端重放(带有原始注释)。

但是在这里,只会重放结果合并提交,并在其上添加“通用”注释。

您需要首先从功能分支重新设置基础:

git checkout feature
git rebase master
这确保了当您合并到主控中时,只会得到快进而不是实际的合并

我的流程通常更像这样:

git checkout master
git svn rebase
git checkout feature
<hack...hack...hack>
git commit
git rebase master
git checkout master
git merge feature
git签出主机
git-svn-rebase
git签出特性
git提交
git重基主控器
切换到主分支
git合并功能
我只是确保做一个svn重基,然后重基我所有的功能分支,以保持一切良好的线性方式,svn喜欢它


另外,如果您不知道,还有
git svn dcommit--dry run
选项。我总是使用
--dry run
并计算提交次数,以确保git svn将提交我所期望的内容。

好的,我想我得到了它,但它仍然没有回答如何将功能合并到主控中,以确保主控将接收所有提交,而不是合并的“合并分支”提交。我是否应该从功能重新设置基址到主控,而不是合并?@dipnlik:如果要重播从
功能
主控
的所有提交,那么是的,重新设置基址是一个选项(如果您知道重新设置分支的风险,您可能已经将该分支推送到其他远程Git repo,并且其他可能已经克隆了该分支,那么这些风险与Git svn无关:请参阅“”
git checkout master
git svn rebase
git checkout feature
<hack...hack...hack>
git commit
git rebase master
git checkout master
git merge feature