我正在编写一个小脚本,想知道自创建以来我在当前分支上做了多少次提交。
在这个例子中,我在child
上做了两次提交:
git checkout master
git checkout -b child
...
git commit -a
...
git commit -a
所以我想要的是
commit_number = ...
echo $commit_number
感谢您的帮助。
答案 0 :(得分:45)
Git可以在没有进一步shell脚本的情况下为您提供提交次数。
git rev-list master.. --count
rev-list(在git help -a
中列出)用于修订。
由于master..
将列出从master的基础和当前分支到当前分支的提交,--count
将为您提供它们的计数。
如果您希望获得两个修订版之间的提交数量,则可以使用master...
。详细说明:从master到master的最新共同祖先和当前分支(HEAD)之间,再到当前分支。如果将提交历史可视化为树,则应该能够遵循共同祖先的两个分支。另一方面,master..
只计算两个分支中的一个。
因此,您是否要使用master..
或master...
取决于您是否想知道您在分支中提交了多少次提交,因为您将其拆分({{ 1}}),或当前主服务器和分支之间的差异,主服务器和中的提交数量,因为分支被拆分。
答案 1 :(得分:16)
假设您从master分支,master..yourbranch
为您提供yourbranch
但不在master中的提交范围。
然后你只需要每行列出一行,并计算行数:
git log master..yourbranch --pretty=oneline | wc -l
答案 2 :(得分:7)
更新:git rev-list现在有--count
:
git rev-list --count master..
使用较旧的git版本:
git rev-list master.. |wc -l
rev-list列出了修订版,master..
引用了提交,因为当前HEAD
偏离master
。
答案 3 :(得分:0)
如果您想查看从您当前的HEAD
开始有多少次提交,您可以执行以下操作:
git shortlog -sn
示例输出:
490 Donald Duck
312 Some Developer
274 John Doe
144 Jane Doe
5 Leet Hacker
答案 4 :(得分:0)
以下命令将计算分支提交总数,忽略合并提交。
git rev-list --count --no-merges master..
rev-list
选项用于处理修订列表。
选项 --count
将只返回一个数字,而 --no-merges
在两个或更多人一起工作时忽略合并,并且在他们提交之前不更新他们的本地副本。
请访问以下链接查看带有说明的图片。
参考:https://improveandrepeat.com/2017/10/little-git-tricks-how-many-commits-are-in-a-branch/