为什么git没有注意到这个内联更改?

Mag*_*gne 1 git merge

我似乎遇到了一个git在合并时没有注意到内联更改的情况.

我的主分支有一个这行文件:

process &block if block
Run Code Online (Sandbox Code Playgroud)

我从git repo中获取了一个,并尝试合并来自同一个文件的更改,该文件有一行:

process 1, &block if block
Run Code Online (Sandbox Code Playgroud)

但是git没有对可能的合并冲突发出警告,也没有突出显示改变的行[1].简单地忽略了更改,而不是使用行[2]更新文件.

为什么git没有注意到这个内联更改?并更新该行(因为该行来自后来的提交)?

编辑:

[1] - 当我做冲突解决时,git没有表明它已经改变了(你知道,它没有在它周围的源代码中加入"<<<").并且随后的合并提交不会以任何方式显示更改的行(无论是使用颜色运行gif diff还是查看github上的代码).

[2] - 该行来自一个repo,它拥有我正在处理的同一个gem的更新版本(因此应该有一些常见的提交祖先用于进行合并.此外,该行在稍后的提交中更新同样的回购,所以git应该很明显,这实际上是一个更新).

编辑:

如果它扮演角色,这是合并前的提交树:

原始宝石(共同祖先):

--A
Run Code Online (Sandbox Code Playgroud)

我的主分支(实际上是原始宝石的一个分支):

--A--  
     \  
      --B  
Run Code Online (Sandbox Code Playgroud)

(B中的线没有变化,但来自A)

我合并到主服务器的repo(gem的更新版本):

--A---C---D
Run Code Online (Sandbox Code Playgroud)

(该行在D中更新)

Jan*_*dec 6

合并,git或其他(没有错误或不完整的实现),通过查找两个分支的最新共同祖先,然后组合自那时以来的变化.如果双方改变界线(以不同的方式),那只是一种冲突.如果只有一方更改了它,则应用该更改.

在Git中,你可以看到从合并基础到要使用合并分支头的变化git diff HEAD...branch,并使用从合并的碱基改变以本地头git diff branch...HEAD(一般,git diff左侧...右侧显示了从共同的祖先变化的,以).在执行合并之前,这些命令适用于您.在事实之后,它将是(git diff HEAD^..HEAD^2并且是第一个父母,是正确的父母).git diff HEAD^2..HEAD^HEAD^HEAD^2

您还可以看到所有的修改,因为通过更换合并基础git diffgitk上面的命令或只问什么单纯的基地使用git merge-base HEAD branch.