例如我有这样的历史
A -> B -> C -> F -> G ---------- feature
\
D -> E -------- master
在整个历史记录中,我有一个文件 a.txt ,其中包含第一行,例如“sometext”。 在提交 G 时,我决定删除“sometext”并将第一行留空。然后我合并了这两个分支。形成新提交,第一行为空白。所以 E 包含“sometext”行,而 G 则不包含。所以这是合并的分支之间的差异。 git如何决定在合并提交中包含哪些内容?是因为 G 是在 E 之后制作的吗?
答案 0 :(得分:3)
在这种情况下,它将识别两个分支的共同祖先C
,并比较自每个分支C..G
与C..E
上的祖先以来的更改。
由于C..E
未触及该行,但C..G
执行此操作,因此会G
进行更改。如果两个分支以不同方式更改了同一行,则会要求您手动解决冲突。
这是3-way merge:有关讨论,请参阅this old question,有关更多合并选项的文档中有Merge Strategies部分。