Number of commits on branch in git
Solution 1
Git can provide you with the number of commits without further shell scripting.
git rev-list master.. --count
rev-list (listed in git help -a
) is used to work with revisions.
As master..
will list the commits from the base of master and the current branch up to the current branch, --count
will give you the count of them.
If you would instead want to have the number of commits between the two revisions you would use master...
. To elaborate: between as in from master to the most recent common ancestor of master and the current branch (HEAD), and up to the current branch again. If you visualize the commit history as a tree you should be able to follow the two branches from the common ancestor. master..
on the other hand will just count one of the two branches.
So whether you want to use master..
or master...
depends on whether you want to know how many commits you made in your branch since you split it off (master..
), or the difference between the current master and branch, the number of commits in master and the branch since the branch was split off.
Solution 2
Assuming you branched from master, master..yourbranch
gives you the range of commits that are in yourbranch
but not in master.
Then you just have to list them one line each, and count the number of lines:
git log master..yourbranch --pretty=oneline | wc -l
Solution 3
Update: git rev-list now has --count
:
git rev-list --count master..
With older git versions:
git rev-list master.. |wc -l
rev-list lists revisions, and master..
refers to commits since current HEAD
diverged from master
.
Solution 4
If you want to see how many commits you or anyone else has made, starting from your current HEAD
, you can do:
git shortlog -sn
Example output:
490 Donald Duck
312 Some Developer
274 John Doe
144 Jane Doe
5 Leet Hacker
Solution 5
The following command will count the total branch commits, ignoring the merge commits.
git rev-list --count --no-merges master..
The rev-list
option is used to work with the revision list.
The option --count
will only return a number while --no-merges
ignores the merges when two or more people work together and don’t update their local copy before they commit.
Please visit the following link to see the picture with explanation.
Ref: https://improveandrepeat.com/2017/10/little-git-tricks-how-many-commits-are-in-a-branch/
Related videos on Youtube

Andrey Ermakov
DevOps engineer in the top Russian online banking company
Updated on June 16, 2022Comments
-
Andrey Ermakov 12 months
I'm writing a small script and want to know how many commits I made on a current branch since it was created.
In this example I'd have 2 commits made on
child
:git checkout master git checkout -b child ... git commit -a ... git commit -a
So what I want is
commit_number = ... echo $commit_number
-
Zoltan Toth almost 11 yearspossible duplicate of Number of commits in a git repository
-
Andrey Ermakov almost 11 years@ZoltanToth answer from your question returns number of commits since repository creation, not since branch was created.
-
Paul Lan over 5 yearsPlease consider my answer (supposing better): stackoverflow.com/a/47133753/931908
-
-
Nicholas Shanks over 9 yearsThis is a better solution than the accepted answer, though I would put the option before the committishes:
git rev-list --count master..
-
Chuck Wilbur over 7 yearsI had to use this one to be compatible with versions of
git rev-list
old enough that they didn't have the--count
switch -
user1338062 over 7 years@ChuckWilbur thanks for the comment, I added
--count
to the answer -
Chizaram Chinedu over 7 yearsBetter answer as it covers non *nix based platforms too.
-
Alan Dong almost 5 yearsFor people who are interested in knowing what the detailed difference between double dots vs triple dots, please take a look at here stackoverflow.com/a/24186641/2305243. Really nice illustration.