如果我在其他人的更改之前或之后进行编辑,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
不支持。)
一位同事有一张票将在我的之后合并(为了这个问题,假设它是不可更改的),我需要对他们更改过的文件进行更改。
假设修改后的文件是:
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
不支持。)