Git将文本文件与包含合并冲突语法的内容进行合并



当合并两个完全不同的文件时,git会将文件更改为如下所示,以显示文件之间存在冲突:

<<<<<<< HEAD
[fileA's content]
=======
[fileB's content]
>>>>>>> newbranch

我在想,如果我用假语法更改fileA's content

text1
=======
text2
>>>>>>> newbranch
text3
<<<<<<< HEAD
text4

当尝试合并时,冲突文件将如下所示:

<<<<<<< HEAD
text1
=======
text2
>>>>>>> newbranch
text3
<<<<<<< HEAD
text4
=======
[fileB's content]
>>>>>>> newbranch

问题

git如何知道语法是真的还是假的?或者上面的内容只是破坏了合并过程?

文件的输出仅用于查看更改。

Git不在乎,也不处理文件的内容
在现实生活中,幕后是保存内容的增量,并生成标记为SHA-1的当前存储库的完整快照。

这有点复杂,但我尽量简单地解释。


您建议的输出更类似于diff3,而不是diff2。对于一般知识,这里为diff2&diff3

  • diff2:http://www.xmailserver.org/diff2.pdf
  • diff3:http://www.cis.upenn.edu/~bcpierce/papers/dif3-short.pdf

这是diff3:的输出

cauliflower
<<<<<<< HEAD
peas
potatoes
||||||| merged common ancestors
peas
=======
>>>>>>> topic
tomatoes

git如何知道语法是真的还是假的?或者上面的内容只是破坏了合并过程?

再次:Git并不关心内容。

一旦您合并了内容(并且您可以重写整个文件),您就可以再次将其添加到git中,然后git计算新差异(无论内容如何,您都可以将其与合并添加的所有内容一起保留或更改),并将其提交到存储库。

最新更新