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

时间:2018-03-01 09:50:24

标签: bash git

我试图获得分支A中存在的提交,但是在分支B中不存在。我认为这两个命令会给我相同的结果,但它们不会。

git rev-list A ^B --no-merges | wc -l
git log A ^B --no-merges | wc -l

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

2 个答案:

答案 0 :(得分:1)

git rev-list的输出(默认情况下至少是)提交哈希值:

$ git rev-list HEAD^..HEAD
e3a80781f5932f5fea12a49eb06f3ade4ed8945c

默认情况下,git log的输出更详细:

$ 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 :(得分:0)

基本上git .practiceTypeItem { &__container { border-top: 2px solid #E5E9F1; } &:last-child &__container { border-bottom: 2px solid #E5E9F1; } } 与git rev-list相同,但是格式特殊。 在git loggit log中,您都可以指定格式。

我为我制作了一个别名,以使其具有git log的漂亮的单行输出,请尝试以下操作:

git rev-list

它应该打印与git log --pretty=format:"%C(auto)%ad %h %<(15,trunc)%C(dim white)%an %C(auto)%d %s" 相同的行数,但以更好的可读格式显示,包括日期,作者,短提交时间和提交消息