【发布时间】:2023-03-14 15:26:01
【问题描述】:
当我跑步时
git branch --no-merged
在this repo 上,第一个列出的分支是一个名为dcxl 的分支。
但是当我在 GitHub 中查看分支时,我看到的只是
这个分支是 master 后面的 1291 次提交。
当我转到 GitHub 的拉取请求界面时,我得到:
没有什么可比较的。
master 是最新的,包含来自 dcxl 的所有提交。
根据this answer,查看前面/后面提交的方式是
git rev-list --left-right --count [BRANCH]...master
当我运行它时,我得到:
$ git rev-list --left-right --count master...dcxl
426 1717
我将其读作“分支dcxl 提前 426 次提交,在 master 后面提交 1717 次”。
现在,1717 - 426 = 1291,所以git rev-list 输出与 GitHub 告诉我的内容之间显然存在某种关系,但 GitHub 似乎以某种方式将这 426 个“提前”提交与 1717 个“后面”提交中的 426 个识别出来以git rev-list 没有的方式。
从一些答案中,我不确定是哪个,我找到了--no-merges 选项,并尝试了,以防合并提交是不同的:
$ git rev-list --left-right --count --no-merges dcxl...master
396 1610
还是不一样。
我还有其他 repos,其中 git rev-list 的输出与 GitHub 的输出完全匹配。而这个特定的 repo,包括分支,都是从 Mercurial 迁移过来的,所以历史上可能会有各种各样的恶作剧。但我很确定 GitHub 是对的,在这里,这个分支中没有任何需要合并的东西。
但是如何从命令行检查呢?为什么我得到的数字不同,我需要哪些命令/选项才能获得 GitHub 给我的相同数字?
【问题讨论】:
-
在链接答案下方的评论中,有人建议运行
git rev-list --left-right --count origin/master...@ | cut -f1来获得幕后,你试过了吗?它输出什么?