解决Git Svn冲突

Rob*_*son 9 git git-svn

我正在使用Git-Svn在工作中与Svn存储库进行交互,我似乎找不到有效解决冲突的方法.我已经阅读了关于这个主题的其他问题,但显然我需要更多补救措施,因为我似乎总是以某种无限循环结束.我重新定义,使用mergetool(meld)来解决我的冲突,当我结束所有这些时,我尝试做一个dcommit,并在提交错误期间遇到合并冲突.

我知道这感觉就像是重复一样,但是沮丧让我再次问起,有一些非常具体的细节我将如何处理这个问题,希望有人可以告诉我我的进程到底搞砸了.

我的设置:

我有一个远程分支(svn/trunk),一个本地分支(trunk)和另一个我通常工作的本地分支(working-trunk).从svn/trunk检出干线,从干线检查工作干线.

这是我一直在做的事情:

  1. 在我的主干上,git svn rebase(返回冲突)
  2. git mergetool
  3. [解决该文件的冲突]
  4. 从meld保存合并文件并关闭meld.
  5. git add .
  6. git rebase --continue
  7. [冲洗,重复]
  8. 如果我收到一条消息,询问我是否使用过git add,我git rebase --skip

当我到达所有报告的更改结束时,一切都停止了,我想也许我不知道该做什么.Git没有显示任何内容,我似乎又回到了主干上.Git然后允许我dcommit,但如果我之后立即尝试rebase,我最终重新解决我刚刚解决的冲突.

显然我在这里缺少一个关键部分,但我只是没有看到它而且它引起了很多问题和挫折感.在Git中合并可能很容易,但我肯定不会发现这种情况.

谢谢.

更新:只是想抛出一个快速更新来描述我的工作流程,以防问题的一部分(或全部).

首先,在使用svn/前缀克隆我的存储库后,我有了我的svn/trunk远程分支.鉴于:

  1. git co -b trunk svn/trunk要把我的遥控器检查到当地的分支机构.
  2. git co -b working-trunk创建了一个工作分支,用于创建一个更大程度的分离,以便我的本地主干始终可以镜像我的远程主干.
  3. 我删除了默认的主分支(当使用svn时,我发现用"trunk"而不是"master"更容易思考).

一旦我拥有了所有分支,我的典型工作流程如下所示:

  1. working-trunk上,我进行了更改并提交了它们.
  2. git co trunk做了一个git svn rebase.
  3. 假设新代码被重新命名,我git rebase working-trunk.
  4. git co working-trunk
  5. git merge trunk
  6. git rebase trunk
  7. git co trunk
  8. git merge working-trunk
  9. git svn dcommit

我知道,这是很多步骤,但这就是每个人和其他人都推荐的.我的致命缺陷可能在这个过程中的某个地方吗?

再次感谢.

Jus*_*tin 5

我建议使用git rebase而不是git merge.Svn保持线性历史,有时似乎与git branch merge相混淆.使用git rebase可确保svn理解线性历史记录.

请参阅:http: //learn.github.com/p/git-svn.html获取更多信息和指南.