合并两个文件时从哪个文件中获取更改

时间:2013-11-04 16:08:23

标签: git merge

例如我有这样的历史

A -> B -> C -> F -> G ---------- feature
           \
            D -> E  -------- master

在整个历史记录中,我有一个文件 a.txt ,其中包含第一行,例如“sometext”。 在提交 G 时,我决定删除“sometext”并将第一行留空。然后我合并了这两个分支。形成新提交,第一行为空白。所以 E 包含“sometext”行,而 G 则不包含。所以这是合并的分支之间的差异。 git如何决定在合并提交中包含哪些内容?是因为 G 是在 E 之后制作的吗?

1 个答案:

答案 0 :(得分:3)

在这种情况下,它将识别两个分支的共同祖先C,并比较自每个分支C..GC..E上的祖先以来的更改。

由于C..E未触及该行,但C..G执行此操作,因此会G进行更改。如果两个分支以不同方式更改了同一行,则会要求您手动解决冲突。

这是3-way merge:有关讨论,请参阅this old question,有关更多合并选项的文档中有Merge Strategies部分。