我在 git 分支中开发各种功能。当我想通过 git-svn 将我的代码签入 SVN 时,我执行以下操作:
git co feature_branch
git svn rebase
git co master
git svn rebase
git merge --no-ff feature_branch
git commit --amend
git svn dcommit
这工作得相当好,除非另一个开发人员在此过程中的任何时候提交给 SVN,在这种情况下:
- 如果在我 rebase feature_branch 和 master 之间进行 SVN 提交,我会得到一个如下所示的日志:
* 4e6992a BUG-003 My SVN commit (containing cdb40ba and 3b18ea4)
|\
| * cdb40ba local commit 1
| * 3b18ea4 local commit 2
* | cf8a028 BUG-002 Another developer's SVN commit
|/
* 940c613 BUG-001 Another developer's SVN commit
- 如果在我 rebase master 和 之间进行 SVN 提交
svn dcommit
,则后者由于合并问题而失败(在这种情况下,我会进行硬重置并重新开始)
如何在单个原子操作中完成此操作?