2012-06-06 32 views
17

我正在寫一個小腳本,想知道自創建以來在當前分支上提交了多少個提交。git分支提交的數量

在這個例子中我有2對的提交作出child

git checkout master 
git checkout -b child 
... 
git commit -a 
... 
git commit -a 

所以我想是

commit_number = ... 
echo $commit_number 

謝謝您的幫助。

+0

[git倉庫中的提交數量]的可能重複(http://stackoverflow.com/questions/1199312/number-of-commits-in-a-git-repository) –

+2

@ZoltanToth回答你的問題返回自創建存儲庫以來提交的數量,不是自從創建分支以來。 –

+0

請考慮我的回答(假設更好):https://stackoverflow.com/a/47133753/931908 –

回答

40

Git可以爲您提供沒有進一步shell腳本的提交數量。

git rev-list master.. --count 

rev-list是用於與修訂工作的半隱藏(在git help未列出的)命令。

由於master..會列出從主站和當前分支到當前分支的提交,--count會給你它們的計數。

如果您不想在兩個修訂版本之間提交承諾數,您可以使用master...。詳細說明:從主人到最近的共同祖先主人和當前分支(HEAD)之間,再次到當前分支。如果你將提交歷史記錄看成一棵樹,你應該能夠跟隨來自共同祖先的兩個分支。 master..另一方面只會計數兩個分支之一。

因此,無論你想使用master..master...取決於你是否想知道你多少提交您的分支取得因爲你把它分解關閉(master..),或當前主機和支路之間的區別,分支自分支以來,分支中的提交數量。

+3

這是一個比接受的答案更好的解決方案,雖然我會在committishes之前提供選項:'git rev- list --count master..' –

+0

更好的答案,因爲它也涵蓋了非基於nix的平臺。 – gnuchu

15

假設你從主分支,master..yourbranch給你的提交範圍在yourbranch但不在主。

然後你只需要列出他們每一條線,並計算行數:

git log master..yourbranch --pretty=oneline | wc -l 
7

更新:git的轉速名單現在有--count

git rev-list --count master.. 

年紀較大git版本:

git rev-list master.. |wc -l 

rev-list l ists修訂,並且master..提及提交,因爲當前HEADmaster不同。

+1

我不得不使用這個與'git rev-list'版本兼容的舊版本,以至於他們沒有'--count'開關 –

+0

@ChuckWilbur感謝您的評論,我在答案中加了'--count' – user1338062