如何在Git中合并冲突与在Subversion中合并冲突相比?

时间:2012-12-20 18:39:03

标签: git svn merge conflict

当我在Subversion工作时,我总是在svn update之前做svn commit。如果有任何冲突,我会在进行更新时收到警告。然后,在我的工作目录中,我得到filename.javafilename.java.minefilename.java.r10filename.java.r13。根据这些文件,我弄清楚如何解决冲突,将其标记为已解决并提交。

我对Git比较陌生,所以我想弄清楚git的上述工作流程的等价物。什么git命令可能会导致合并冲突?是否有上述文件的等价物将显示在我的工作目录中?

1 个答案:

答案 0 :(得分:2)

有许多git子命令可能会导致合并冲突,包括merge(和pull,因为它基本上是fetch后跟merge }),cherry-pickrebase和其他人。不过,git以完全不同的方式处理合并冲突。它不是为不同的版本创建单独的文件,而是创建一个文件,其中有标记有分隔符的部分,以指示它们来自哪个三向合并方程式。因此,您编辑了一个冲突的文件,并删除了您不想要的部分和分隔符,或者如果两侧都没有完全正确,请将其替换为适当的手动合并混合,然后git add和{{1} }。分隔符是7个git commit<=(有时是>的序列,如果您配置了|格式的)字符看起来像什么像这样:

diff3

如果您没有使用<<<<<<< stuff from your version of the file ||||||| stuff from the common ancestor of the two ======= stuff from the version you're merging in >>>>>>> 样式的冲突标记,则会遗漏diff3分隔符和常见的祖先行。

您可以输入|来详细了解它。