我想获得Git存储库的提交数量,有点像SVN的修订号。

我们的目标是将其用作唯一的、递增的构建号。

我目前这样做,在Unix/Cygwin/msysGit上:

git log --pretty=format:'' | wc -l

但我觉得它有点过时了。

有更好的办法吗?如果我实际上不需要wc甚至Git,那么它就可以在裸Windows上工作,那就太棒了。只要读取一个文件或目录结构…


当前回答

Git配置——全局别名。计数“rev-list—all—Count”

如果你把它添加到你的配置中,你可以只引用命令;

git 计数

其他回答

如果你只使用一个分支,比如master,我认为这会很好:

git rev-list --full-history --all | wc -l

这将只输出一个数字。你可以将它别名为

git revno

让事情变得更方便。要做到这一点,编辑你的.git/配置文件,并添加到:

[alias]
    revno = "!git rev-list --full-history --all | wc -l"

这将不能在Windows上工作。我不知道该操作系统的“wc”对应的是什么,但编写一个Python脚本来为您进行计数将是一个多平台解决方案。

编辑:获得两次提交之间的计数:


我正在寻找一个答案,该答案将显示如何获得两个任意修订之间的提交数,但没有看到任何答案。

git rev-list --count [older-commit]..[newer-commit]

要将其转换为变量,最简单的方法是:

export GIT_REV_COUNT=`git rev-list --all --count`

Git shortlog是获取提交细节的一种方法:

git shortlog -s -n

这将给出提交数和作者名称。s选项删除作者每次提交的所有提交消息。如果还希望看到提交消息,则删除相同的选项。-n选项用于对整个列表进行排序。希望这能有所帮助。

有一些很酷的方法可以做到这一点

第一个方法

git shortlog -s

该命令打印所有参与repo的用户的提交计数列表。

956 Pankaj Tanwar
235 The Ninja
540 The Hardcore Geek
664 The Ever Shining Star
984 The Experienced Man

简单地说,要获得总提交数-

git shortlog -s |抓住“潘卡伊·坦瓦尔”

它打印-

956 Pankaj Tanwar

另一种干净又酷的方法是-

git rev-list HEAD --author="Pankaj Tanwar" --count 

要计算贡献的代码行数和提出的拉请求总数,请查看此博客

你可以用:

git shortlog -s -n

结果:

 827  user one
    15  user two
     2  Gest