一天的 Git 提交计数
Posted
技术标签:
【中文标题】一天的 Git 提交计数【英文标题】:Git commit count a day 【发布时间】:2016-06-16 14:12:03 【问题描述】:我有一个名为development
的分支。现在我想知道每天(即每天)发生了多少次提交。
我想要提交的总次数(即一天内的提交次数。
我试过这个命令,但它从分支中计算所有提交
git shortlog -s -n
我的问题是统计一天的提交次数
【问题讨论】:
【参考方案1】:我试过了:
git 日志 | grep 日期 | awk '打印" : "$4" "$3" "$6' | uniq -c
而且它有效。你会得到类似的东西:
5 : 3 Mar 2016
4 : 2 Mar 2016
8 : 1 Mar 2016
[...]
我找到了命令here。
【讨论】:
结合 grep "你的日期"。这仅适用于特定的一天。上面的解决方案有范围。 这似乎是不必要的浪费,因为它传递了一个正常的、完整的git log
,而不是每次提交所需的最小值。此外,您不要 sort
,这可能会导致 uniq
返回糟糕的结果和/或对您大喊大叫,因为作者(您在此处显示的内容)和提交日期都不需要按时间顺序排列。【参考方案2】:
试试这个:
$ git rev-list --count --since=<start-date> --before=<end-date> <ref>
例如,要获取当前分支中昨天完成的提交次数:
$ git rev-list --count --since=yesterday --before=today HEAD
也接受绝对日期:
$ git rev-list --count --since=2016-03-02 --before=2016-03-03 HEAD
【讨论】:
【参考方案3】:这回答了所问问题的“每天”方面,它似乎无法决定是要“每天”表示多个还是仅“一天”表示单一。 ;-) 显然,“per day”是“a day”的超集,所以这对展示很有用; grep
剩下的就可以了!
又短又甜:
git log --date=short --pretty=format:%ad | sort | uniq -c
示例输出:
1 2017-12-08
6 2017-12-26
12 2018-01-01
13 2018-01-02
10 2018-01-14
7 2018-01-17
5 2018-01-18
解释:
git log
显然是一个先决条件。
--date=short
将我们的 date-format
设置为 YYYY-MM-DD
,这 (A) 是我们所需要的, (B) 随后将按字母顺序将 sort
按时间顺序排列。
--pretty=format:%ad
告诉git
,我们只想在我们首选的date-format
中获取每个提交的a
author d
ate。如果你愿意,你可以使用cd
代替c
ommit d
ate,但是一旦你使用cherry-pick
、rebase
等,它的用处就会大大降低。
uniq
需要 | sort
,因为它只检查相邻的重复项。当然,我们几乎可以肯定无论如何都希望日期排在最后。
| uniq -c
计算每个 YYYY-MM-DD
的相邻重复项的数量,并将其添加到日期之前。
喜剧奖励:如果您希望将其作为制表符分隔的日期然后计数,以便输入到图形引擎或类似引擎中,那么只需将上述结果输入
sed 's:^ *\([1-9][0-9]*\) \([1-9][0-9-]*\)$:\2\t\1:g'
就这么简单……!
或者,通过使用awk
而不是sed
来避免发疯:
awk 'BEGINOFS = "\t" print $2, $1'
【讨论】:
以上是关于一天的 Git 提交计数的主要内容,如果未能解决你的问题,请参考以下文章