当合并两个完全不同的文件时,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.pdfdiff3
: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计算新差异(无论内容如何,您都可以将其与合并添加的所有内容一起保留或更改),并将其提交到存储库。