我在http://github.com/ohcibi/prezto
有一个zprezto分支重现我的问题:
git clone http://github.com/ohcibi/prezto
cd prezto
git checkout ohcibi
(我有一个带有该名称的分支,这里没有拼写错误!)git merge master
提交日志显示ohcibi
中只有3次提交,这是自上次合并提交以来的新提交,即4月26日左右。所有3次提交都不会触及任何冲突的文件(除了一个可能出现混淆的文件)。
但为什么合并在其他文件甚至.gitmodules
上也会发生冲突?
注意:我不需要帮助解决合并冲突!我知道该怎么做,我故意没有将git-merge-conflict-resolution-tag
添加到该问题,因为它将是一个错误的标签(所以它不会丢失,不要添加它!)。我想知道为什么这些冲突首先发生(假设冲突文件在两个分支中都没有*改变,这是合并冲突的常见原因,我知道)。
答案 0 :(得分:3)
Git在树上使用三个点来合并,你的分支的头部,你正在合并的分支的头部,以及两者中最近的共同祖先。如果有疑问,你可以运行merge-base
管道命令来找出git在最近的共同祖先看到的内容。
git merge-base <branch1> <branch2>
运行该命令我发现mergebase为4f87376b5
自上次将大师合并到您的分支机构以来,已经过了5个月了。合并后,master指向2017-04-24上的提交。 (现在是您当前合并的合并基础。)
自那时起,主分公司已提交了123份提交,最近一次是在2017-09-19。这123个提交可能与您的分支上无法从主服务器上提交的137个提交中的任何更改发生冲突。
Git并未查看“提交次数”或发生的时间和地点。它所看到的只是每个分支头和合并基础之间的累积差异。您可以运行git diff 4f87376b5 ohcibi
和git diff 4f87376b5 origin/master
来查看从合并的每一侧集成的更改范围。