我想要获取我的Git仓库的提交次数,类似于SVN版本号。
目的是将其用作唯一的、递增的构建编号。
目前我是这样做的,在Unix/Cygwin/msysGit上:
git log --pretty=format:'' | wc -l
但我感觉这有点像是一种hack。
有没有更好的方法?如果我不需要wc
甚至Git,那就太棒了,这样它就可以在裸露的Windows上运行。只需读取文件或目录结构即可...
我想要获取我的Git仓库的提交次数,类似于SVN版本号。
目的是将其用作唯一的、递增的构建编号。
目前我是这样做的,在Unix/Cygwin/msysGit上:
git log --pretty=format:'' | wc -l
但我感觉这有点像是一种hack。
有没有更好的方法?如果我不需要wc
甚至Git,那就太棒了,这样它就可以在裸露的Windows上运行。只需读取文件或目录结构即可...
git rev-list --count <revision>
git rev-list --count --all
git shortlog | grep -E '^[ ]+\w+' | wc -l
。如果你想获取每个贡献者的提交数,可以使用命令:git shortlog | grep -E '^[^ ]'
。 - skaleewc -l
。极简主义万岁。我已将其纳入我的答案中。 - Benjamin Atkingit shortlog | grep -Ev '^[ ]+\w+'
),可以看出即使没有消息的提交(即“<none>”)也不会被计算在内。使用git rev-list HEAD --count
更简洁和准确。 - ctruedengit rev-list HEAD --count
是更好的解决方案。 - ctruedengit log --oneline | wc -l
- Jimmy Kanegit shortlog
是其中一种方式。
git shortlog
本身并不能解决原始问题,即总的提交次数(不按作者分组)。 - ctruedengit rev-list HEAD --count
而不是 OP 中给出的原始方法。在我的测试中, git log --pretty=format:'' | wc -l
的计数会多一个。 - ctruedengit log --oneline | wc -l
在OS X 10.8.5上没有错(不比预期少一行)。” - Andy Stewart该命令返回按提交者分组的提交次数:
git shortlog -s
输出:
14 John lennon
9 Janis Joplin
您可能想知道-s
参数是--summary
的缩写形式。
git shortlog
不能回答原始问题中 总共 的提交次数(不按作者分组)。请使用git rev-list HEAD --count
代替。 - ctruedengit shortlog -sn
- luizflsgit rev-list HEAD --count
git rev-list <commit>
: 列出由给定提交(在本例中为 HEAD)通过父链接可到达的提交。
--count
: 打印一个数字,说明将列出多少个提交,并禁止所有其他输出。
如果您正在寻找一种独特而仍然易读的提交标识符,那么git describe可能正是您需要的。
fatal: No names found, cannot describe anything
的错误提示,那么你需要创建至少一个标签(计数将从该标签开始)。如果标签没有注释,你应该执行 git describe --tags
命令。 - user2518618您可以直接使用:
git shortlog -s -n
结果:
827 user one
15 user two
2 Gest
你并不是第一个考虑在Git中使用"修订号码",但'wc
'非常危险,因为提交可能会被删除或压缩,并且历史记录可能被修改。
"修订号码"在Subversion中尤其重要,因为在合并的情况下需要(SVN1.5和1.6已经在这方面有所改进)。
你可以使用预提交钩子将修订号码包含在注释中,并使用不涉及查找分支所有历史记录以确定正确号码的算法。
Bazaar实际上提出了这样的算法,对于你想要做的事情可能是一个很好的起点。
(正如Bombe的答案所指出的那样,Git实际上有一种自己的算法,基于最新的标签,加上提交数量,再加上SHA-1密钥的一部分)。如果这个算法适用于你,你应该查看(并点赞)他的回答。
应用程序编号是提交的一部分,但“应用程序的“信息”文件”在打包过程中生成,有效地将一个应用构建号与技术修订id链接起来。
git log --oneline | wc -l
oneline
确保在同一行内显示。
要将它存入变量中,最简单的方法是:
export GIT_REV_COUNT=`git rev-list --all --count`
git rev-list
是正确的工具,而不是像其他人说的 git log
。 - Nayukiwc -l
命令,只需使用 --count
开关:git rev-list --all --count
。 - slmGit shortlog是获取提交细节的一种方法:
git shortlog -s -n
这将显示提交次数和作者名称。-s选项会移除作者为每个提交所做的所有提交消息。如果您想查看提交消息,删除相同的选项即可。-n选项用于对整个列表进行排序。希望这可以帮到您。
git shortlog
无法回答“总共”提交次数的问题(不按作者分组)。请改用git rev-list HEAD --count
代替。 - ctrueden
git rev-list HEAD --count
git rev-list - Jake Berger