我正在使用 Git-Svn 与工作中的 Svn 存储库进行交互,但我似乎无法找到一种方法来有效地解决我一生中的冲突。我已经阅读了关于这个主题的其他问题,但显然我需要一些更有效的补救措施,因为我似乎总是陷入某种无休止的循环。我变基,使用 mergetool (meld) 来解决我的冲突,当我完成所有这些时,我尝试执行 dcommit 并在提交错误期间遇到合并冲突。
我知道这感觉像是重复,但沮丧让我再次询问,并提供了一些关于我将如何处理的非常具体的细节,以便希望有人能准确地告诉我我的流程在哪里搞砸了。
我的设置:
我有一个远程分支 (svn/trunk)、一个本地分支 (trunk) 和另一个我通常工作的本地分支 (working-trunk)。主干已从 svn/trunk 中检出,工作主干已从主干中检出。
这是我一直在做的事情:
- 在我的后备箱上,
git svn rebase
(返回冲突) git mergetool
- [解决该文件的冲突]
- 从 meld 中保存合并的文件并关闭 meld。
git add .
git rebase --continue
- [冲洗,重复]
- 如果我收到一条消息询问我是否使用过
git add
,我git rebase --skip
当我完成所有报告的更改时,一切都停止了,我想也许我现在不确定该怎么做。Git 没有显示任何要提交的内容,我似乎又回到了主干上。然后 Git 允许我 dcommit,但如果我之后立即尝试变基,我最终会重新解决我刚刚解决的冲突。
显然我在这里遗漏了一个关键部分,但我只是没有看到它,它导致了很多问题和挫败感。在 Git 中合并可能很容易,但我肯定不会发现这种情况。
谢谢。
更新:只是想快速更新一下来描述我的工作流程,以防这是问题的一部分(或全部)。
首先,在使用svn/
前缀克隆我的存储库后,我有我的svn/trunk
远程分支。鉴于:
- 我
git co -b trunk svn/trunk
要检查我的远程到本地分支。 - 我
git co -b working-trunk
创建了一个工作分支,用于创建更多程度的分离,以便我的本地主干始终可以镜像我的远程主干。 - 我删除了默认的 master 分支(使用 svn 时,我发现用“trunk”而不是“master”来思考更容易)。
拥有所有分支后,我的典型工作流程如下所示:
- 在working-trunk上,我进行更改并提交它们。
- 我
git co trunk
和做一个git svn rebase
。 - 假设新代码被重新定位,我
git rebase working-trunk
. git co working-trunk
git merge trunk
git rebase trunk
git co trunk
git merge working-trunk
git svn dcommit
这是很多步骤,我知道,但这是这里和其他地方的每个人都推荐的。我的致命缺陷可能在那个过程中的某个地方吗?
再次感谢。