我正在尝试计算自标签制作以来的提交次数。
我尝试过使用git rev-list
,但无论我尝试什么,它似乎都会返回相同的结果。这就是我的尝试:
$ git rev-list 1.7Start^..HEAD | wc -l
13902
$ git rev-list HEAD | wc -l
13902
尝试计算自创建1.7Start标记以来的提交数量。我目前正在master
因此使用HEAD
,但使用git rev-list master | wc -l
给了我同样的效果。
自1.7以来,已有13000多次提交
git rev-list master
是否应该向我显示master中的每个提交,因此产生的数字大于1.7Start^..master
,这应该只是给我差异?
答案 0 :(得分:4)
您收到的结果表明1.7Start^
和HEAD
之间没有共同的历史记录,因此1.7Start
和HEAD
必须具有不同的根提交。 (传递给a..b
时的语法git rev-list
仅表示“b
中的每个提交都不在a
中。”
在上面的评论中,提问者表示这是因为存储库是从Subversion迁移的,而master
完全不同于1.7Start
指向的导入分支。
答案 1 :(得分:3)
Git有git rev-list --count,它比wc-l更快。
在git的更高版本中还有git rev-list --use-bitmap-index --count,它是--count的优化。
rev-list需要提交,例如,查找当前分支的repo中的所有提交。
git rev-list --count HEAD
答案 2 :(得分:1)
如果您只关心最后一个标记,那么git describe
会告诉您最后一个标记是什么以及当前分支中提交了多少次提交它即可。例如,在下面的输出中,最后一个标记是0.1.9,并且在当前分支中进行了67次提交。
$ git describe --tags
0.1.9-67-gff9fd30
要进行验证,您可以使用以下命令查看完整的提交列表。
$ git log --oneline $(git describe --tags --abbrev=0)..
如果将其输出传递给wc -l
,则应返回相同的计数。请注意,!!
是Bash中的上一个命令。
$ !! | wc -l
67