这既不是“正常”也不是“异常”。就是这样。如果您的白猫在耳尖上出现生长缓慢的皮肤癌,则可以通过简单的手术轻松将其切除。浅肤色猫耳朵上的皮肤癌“正常”吗?如果您的猫外出,这是不正常的:黑色素含量低的皮肤细胞上的紫外线会导致突变,有时会导致基底细胞癌。您可以将猫留在室内(无论如何,大多数家猫通常都建议这样做),但这并不能保证他不会在粉红色的耳尖或鼻子上患上皮肤癌。1
为什么会发生这些冲突?
当 Git 进行合并时,Git 会找到三个输入文件。index:
当您应用补丁时,如果补丁中有一行,Git 可能会选择进行合并。2 该index
行告诉 Git原始文件是什么,补丁适用于哪个文件。然后,Git 可以将补丁(此时仅适用于原始文件)应用到该原始文件以生成“他们的文件”。
Git 现在拥有用于任何合并的相同信息:原始文件、包含更改的文件版本以及包含更改的文件版本。Git 现在可以将您的更改与他们的更改进行比较,以查看它们是否重叠。
如果他们更改的内容与您更改的内容无关,Git 将能够组合这些更改。例如,假设他们在第 10 行修正了单词的拼写,而你没有。相反,假设您通过在文件顶部添加 40 行版权声明来解决缺少版权声明的问题。Git 将能够看到该行现在是第 50 行,而不是第 10 行,并且它应该应用他们的修复。Git 将应用他们的修复程序,一切都会好起来的。speeling
speeling
但是,如果您还修复了该speeling
行和同一行上的其他单词,Git 不知道是接受您的修复还是他们的修复。所以 Git 现在抱怨这条线上的合并冲突。那是因为您的更改会影响其更改所影响的基本文件的同一行。Git 不知道要使用哪些。
这正常吗?如果你们都更改了相同文件的相同行。这完全取决于“您”更改了哪些行,以及“他们”更改了哪些行,这取决于您从哪个通用起始版本开始的文件。如果您在此过程中从其他人那里获得了这些更改,则不会:只要他们 在开始的版本中没有这些更改,那么“您的”更改(包括其他人的更改)及其更改重叠,你会得到一个冲突。
请注意,即使您的更改及其更改不完全重叠,您也会遇到冲突。例如,如果他们更改了第 5 行到第 8 行,而您更改了第 9 行,这些更改“触及边缘”(“邻接”,使用花哨的词),Git 也会称其为冲突。
1当我住在犹他州时,我有一只纯黑色的小猫,鼻子上得了某种癌症。因此,即使有大量的黑色素也不能保证不会出现这种情况,尽管它会有所帮助。不过,她的生活相当不错,达到了“高级小猫”的地位。她的姐姐在前一年死于肾功能衰竭,所以即使她通过了癌症切除手术,她也可能不会持续太久。不幸的是,鼻子手术比耳尖修剪要大得多。
2如果补丁缺少索引行,Git无法进行三向合并。但这只是意味着不适用的补丁失败,而不是尝试合并;您将需要该--reject
标志,并且您必须手动编辑补丁结果。