如果我在其他人的更改之前或之后进行编辑,git 冲突的可能性会降低吗?

Are git conflicts less likely if I edit before or after somebody else's changes?

一位同事有一张票将在我的之后合并(为了这个问题,假设它是不可更改的),我需要对他们更改过的文件进行更改。

假设修改后的文件是:

this line doesn't change

this line is edited

this is added

文件中是否有一个地方(假设我可以自由选择)可以减少我同事合并冲突的可能性?

对重叠或邻接的行进行更改会导致合并冲突(下面会指出一个例外)。对不重叠且不“接触边缘”的行的更改不会产生合并冲突。文件第一行上方有“虚拟”行,在最后一行之后,总是接触。

因此,如果你们都开始于:

the rain
in Spain
falls mainly
on the plain

并且一个提交“触及”第一行(仅)以大写the,而另一个提交“触及”最后一行(仅)以在句子末尾添加句号,那里不会有冲突。但是,如果有人决定将每行的每个第一个单词大写,就会与在最后一行末尾添加句点的更改发生冲突。

当两个修改都将输入行的两个系列更改为完全相同的输出行时,重叠或邻接规则会出现例外情况。在这种情况下,Git——或者几乎任何除“联合合并”之外的三路合并算法——只需要 一个副本 的变化。

(注意 git merge-file 支持联合合并,但 git merge 不支持。)