为何差异极大的master与init分支在GitHub对比时无diff显示?
核心原因
该现象通常由以下两种原因导致:
- 分支选择反向
如果你在GitHub对比页面将基准分支(base)选为init、对比分支(compare)选为master,由于master分支从两个分支分叉后没有产生任何新提交,自然会显示无差异。你可以先确认页面的分支选择是否为base: master、compare: init。 - 对比逻辑差异
如果分支选择正确,那就是GitHub分支对比的默认逻辑和本地git diff的逻辑不同导致的:
- 本地执行的
git diff origin/master --name-only是两点对比,直接比对两个分支最新提交的文件快照,因此会输出所有存在差异的文件列表。 - GitHub分支对比页面默认使用三点对比规则,仅展示两个分支从共同祖先分叉之后,对比分支独有的提交带来的变更。如果init分支已经被合并到其他分支,或者GitHub判定所有变更都已经同步到基准分支,也会出现无diff的提示。
解决方案
手动修改GitHub对比页面的URL,把两个分支名称中间的三个点...替换为两个点..,就能切换为两点对比模式,直接比对两个分支最新快照的差异,和本地git diff的结果保持一致。
内容的提问来源于stack exchange,提问作者pkaramol
相关产品推荐
相关产品推荐

