git log和git rev-list的结果不同

8
我想获取在A分支存在但B分支不存在的提交记录。我认为这两个命令会给我相同的结果,但实际上并不是。
git rev-list A ^B --no-merges | wc -l
git log A ^B --no-merges | wc -l

第一个给了我370,而log返回8000。这两者有什么区别?

2
你有没有试着查看输出结果而不通过“wc -l”进行管道传输? - marcolz
哦,不同的格式.. - loannnlo
try git log --oneline A ^B - Nahuel Fouilleul
2个回答

9
< p > 默认情况下,< code > git rev-list < /code > 命令的输出只包含提交哈希值:

$ git rev-list HEAD^..HEAD
e3a80781f5932f5fea12a49eb06f3ade4ed8945c
< p > 默认情况下,从 git log 命令的输出内容比较冗长: < /p >
$ git log HEAD^..HEAD
commit e3a80781f5932f5fea12a49eb06f3ade4ed8945c
Author: Junio C Hamano <gitster@pobox.com>
Date:   Wed Feb 21 12:45:35 2018 -0800

    Fourth batch for 2.17

第一行是一行(针对一个提交),第二行是五行(针对只有一行日志消息的提交)。因此,最小比率为5比1,且:
$ echo 10k 8000 370 / p | dc
21.6216216216

显示你的比率接近22比1,表明你的大多数日志信息平均约有18行。


1
基本上,git git log 与 git rev-list 相同,但具有特殊格式。在 git loggit rev-list 中,您都可以指定格式。
我为自己创建了一个别名,以便我可以获得漂亮的 git log 单行输出,只需尝试此命令: git log --pretty=format:"%C(auto)%ad %h %<(15,trunc)%C(dim white)%an %C(auto)%d %s" 它应该打印与 git rev-list 相同数量的行,但使用更好的人类可读格式,包括日期、作者、短提交哈希和提交消息。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接