我碰巧在两个分支中有一个文件(比如 abc ): master 和 sample 。
示例上 abc 的提交日期早于当前主上的 abc ;换句话说, abc 是 master 的最新信息。
现在,我跑了:
git checkout sample
git merge master
它自动合并了多个文件(包括 abc )。
问题: abc 中的第42行似乎从分支示例中继续存在,而是从 master 替换。
为什么会这样?我非常期待。请帮忙。
答案 0 :(得分:1)
abc 在主上比示例更新的事实并不意味着它完全被 master <替换<合并期间的/ em>版本。如果示例的 abc 版本有一些 master 上没有的更改,即使它们比 master ,git会在合并期间尝试保留它们。
答案 1 :(得分:1)
重要的是要记住,在合并时,Git不会在文件级别上运行;相反,它在行级别上运行。如果sample
中的行已更改但master
(或master
中但sample
中未更改),则该更改将在两个分支的合并中。
要了解Git为何这样做,请考虑以下情况:
sample
从master
sample
master
如果Git以您期望的方式合并,那么在这种情况下,人X的更改将会丢失。通过逐行检查,Git保留尽可能多的更改。请注意,如果人员X和人员Y都更改了第42行,则无论更改的顺序如何,合并都会导致冲突。