git auto-merge无法按预期工作

时间:2015-06-11 09:26:59

标签: git git-merge

我碰巧在两个分支中有一个文件(比如 abc ): master sample

示例 abc 的提交日期早于当前上的 abc ;换句话说, abc master 的最新信息。

现在,我跑了:

git checkout sample
git merge master 

它自动合并了多个文件(包括 abc )。

问题: abc 中的第42行似乎从分支示例中继续存在,而是从 master 替换。

为什么会这样?我非常期待。请帮忙。

2 个答案:

答案 0 :(得分:1)

abc 上比示例更新的事实并不意味着它完全被 master <替换<合并期间的/ em>版本。如果示例 abc 版本有一些 master 上没有的更改,即使它们比 master ,git会在合并期间尝试保留它们。

答案 1 :(得分:1)

重要的是要记住,在合并时,Git不会在文件级别上运行;相反,它在级别上运行。如果sample中的行已更改但master(或master中但sample中未更改),则该更改将在两个分支的合并中。

要了解Git为何这样做,请考虑以下情况:

  1. samplemaster
  2. 分支
  3. 人员X在sample
  4. 的ABC中更改第42行
  5. 人Y在master
  6. 上更改ABC中的第54行
  7. 分支合并
  8. 如果Git以您期望的方式合并,那么在这种情况下,人X的更改将会丢失。通过逐行检查,Git保留尽可能多的更改。请注意,如果人员X和人员Y都更改了第42行,则无论更改的顺序如何,合并都会导致冲突。