当我在Subversion工作时,我总是在svn update
之前做svn commit
。如果有任何冲突,我会在进行更新时收到警告。然后,在我的工作目录中,我得到filename.java
,filename.java.mine
,filename.java.r10
和filename.java.r13
。根据这些文件,我弄清楚如何解决冲突,将其标记为已解决并提交。
我对Git比较陌生,所以我想弄清楚git的上述工作流程的等价物。什么git命令可能会导致合并冲突?是否有上述文件的等价物将显示在我的工作目录中?
答案 0 :(得分:2)
有许多git
子命令可能会导致合并冲突,包括merge
(和pull
,因为它基本上是fetch
后跟merge
}),cherry-pick
,rebase
和其他人。不过,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
分隔符和常见的祖先行。
您可以输入|
来详细了解它。