【问题标题】:How to get the count of number of commits of a specific branch? [duplicate]如何获取特定分支的提交次数? [复制]
【发布时间】:2022-01-13 14:54:10
【问题描述】:

我想弄清楚是否有办法计算在特定分支上完成的提交次数。

我尝试过使用rev-list,但我得到的计数不同。

PS C:\Dev\code\TestProj> git checkout master
Already on 'master'                            
Your branch is up to date with 'origin/master'.
PS C:\Dev\code\TestProj> git checkout -B "TESTBRANCH"
Switched to a new branch 'TESTBRANCH'
PS C:\Dev\code\TestProj> git commit -a -m "TESTBRANCH-TEST COMMIT"
[TESTBRANCH 3a98967] TESTBRANCH-TEST COMMIT
 1 file changed, 1 insertion(+)            
PS C:\Dev\code\TestProj> git rev-list --count --first-parent TESTBRANCH
9
PS C:\Dev\code\TestProj> 

在上面的代码中,我只在我创建的新分支上提交了一次,我可以看到返回的计数是 9。我认为 Git 也在考虑其他一些修订。

有没有办法将提交计数设为 1?

【问题讨论】:

  • 您需要的具体程度如何? Git 不会在分支上保留正确的提交历史记录,因为分支是临时的并且变化很大
  • 您的git rev-list 探索将默认返回到初始提交。如果你想限制祖先,你必须告诉 git(例如,--not)。
  • @evolutionxbox 即使它不是为了计数,如果分支有提交,我至少需要得到。话虽如此,如果我创建了一个新分支并且没有任何提交,请检查分支以查看是否有任何提交,那么它应该返回 false 。希望这可以澄清..
  • 如果您在提交上创建一个新分支,并且该提交作为祖先,则计数将始终大于 1
  • 分支从哪里开始?

标签: git git-commit


【解决方案1】:

您的rev-list 将一直走到第一个提交。如果TESTBRANCH是从main分支出来的,可以试试:

git log --oneline TESTBRANCH ^main

【讨论】:

    【解决方案2】:

    在这种情况下,您需要使用从 master 到 TESTBRANCH 的提交范围。这将计算 TESTBRANCH 上的所有提交,因为它与 master 不同:

    git rev-list --count --first-parent master..TESTBRANCH
    

    这个问题的答案应该是 1。

    如果稍后拉取,并且 master 上有新的提交,您还可以通过翻转范围内参数的顺序来计算自创建 TESTBRANCH 以来的提交次数:

    git rev-list --count --first-parent TESTBRANCH..master
    

    这种<branch A>..<branch B> 的语法称为提交范围。如需更深入的解释,请参阅this article on commit ranges,,但简短的摘要如下:

    <branch A>..<branch B> 指分支 B 上的所有提交,但不在分支 A 上。所以 master..TESTBRANCH 表示“TESTBRANCH 上的所有提交,不在 master 上”。

    【讨论】:

    • 谢谢阿莱克托。这更恰当地回答了更好的解释。将此作为公认的答案
    • 这假定父分支名称,这可能并不总是需要
    猜你喜欢
    • 1970-01-01
    • 2021-11-01
    • 2021-03-10
    • 1970-01-01
    • 2021-11-04
    • 2011-11-10
    • 1970-01-01
    • 2013-08-26
    • 2016-07-05
    相关资源
    最近更新 更多