3

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

我对 Git 比较陌生,所以我试图弄清楚上述工作流程对 git 的影响。哪些 git 命令可能会导致合并冲突?我的工作目录中是否有上述文件的等价物?

4

1 回答 1

2

有许多git子命令可能导致合并冲突,包括merge(并且pull因为它本质上fetch跟在 后面merge)、cherry-pickrebasegit但是,以完全不同的方式处理合并冲突。它不是为不同的版本创建单独的文件,而是创建一个文件,其中的部分用分隔符标记,以指示它们来自三向合并方程的哪一部分。因此,您编辑一个冲突的文件并删除您不想要的部分和分隔符,或者如果任何一方都不完全正确,则将其替换为适当的手动合并混合,然后git addgit commit. 分隔符是 7 <=>( 有时|,如果您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-styled 冲突标记,|则缺少分隔符和共同祖先行。

您可以键入git help merge以阅读有关它的更多信息。

于 2012-12-20T19:01:32.587 回答