我正在使用Git-Svn与工作中的Svn存储库进行交互,似乎无法找到有效解决冲突的方法来解决我的生活。我已阅读关于此主题的其他问题,但显然我需要更多补救措施,因为我似乎总是以某种无休止的循环结束。我重定位,使用mergetool(meld)来解决我的冲突,并且当我完成所有这些时,我尝试执行dcommit,并在提交错误期间收到合并冲突。解决Git Svn冲突
我知道这感觉像是重复的,但令人沮丧的是让我再次问到,关于我如何去做这件事的一些非常具体的细节,以便希望有人能够确切地告诉我我的过程被搞砸了。
我的设置:
我有一个远程分支(SVN /主干),一个本地分支(主干)和另一个本地分支,我通常在(工作干线)工作。树干从svn/trunk检出,工作树干从trunk中检出。
这就是我一直在做:
- 在我的树干,
git svn rebase
(返回冲突) git mergetool
- [解析该文件冲突]
- 保存合并后的文件从融合并紧密融合。
git add .
git rebase --continue
- [漂洗,重复]
- 如果我问一个消息我是否使用
git add
,我git rebase --skip
当我到的所有报告的变化结束,一切都只是停止,我想也许我不知道该怎么做。 Git没有显示任何内容,我似乎回到了主干上。然后Git允许我提交,但如果我之后立即尝试重新绑定,我最终会重新解决我刚刚解决的冲突。
显然我在这里错过了一个关键的部分,但我只是没有看到它,它导致了很多问题和挫折。在Git中合并可能很容易,但我肯定不会发现这种情况。
谢谢。
更新:只是想抛出一个快速更新来描述我的工作流程,以防万一是部分(或全部)问题。
首先,在使用svn/
前缀克隆存储库后,我有我的svn/trunk
远程分支。鉴于:
- 我
git co -b trunk svn/trunk
检查我的远程到本地分支。 - 我
git co -b working-trunk
创建一个工作分支,我用它来创建一个更多的分离度,以便我的本地中继可以始终镜像我的远程中继。 - 我删除了默认主分支(当使用svn时,我觉得用“trunk”而不是“master”来思考更容易)。
一旦我有我所有的分支,我的典型的工作流程是这样的:
- 在工作干线,我做我的变化,并提交它们。
- I
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
这是一个很大的步骤,我知道,但这是建议每个人都在这里和其他地方。在这个过程中,我的致命缺陷会在哪里?
再次感谢。
做了回答您采摘(Jistin's)解决问题? – inger 2010-06-17 14:19:00