Is it possible to list all users that contributed to a project (users that have done commits) in Git?
Any additional statistics?
Is it possible to list all users that contributed to a project (users that have done commits) in Git?
Any additional statistics?
To show all users & emails, and the number of commits in the CURRENT branch:
git shortlog --summary --numbered --email
Or simply:
git shortlog -sne
To show users from all branches (not only the ones in the current branch) you have to add --all
flag:
git shortlog -sne --all
If you want to be more specific in the list (find a list of unique committer and author), you could use git log
:
git log --pretty="%an %ae%n%cn %ce" | sort -u
%an
author name%ae
author email%n
new line%cn
committer name%ce
committer emailOther placeholders are described in the pretty print documentation of git log
.
You can try this:
git log | grep Author: | sort -u
(users that have done commits)
Note: by default git shortlog
groups commits by authors.
If you need to group them by committers, you will need Git 2.12 (Q1 2017)
git shortlog -snc
See commit 03f4082 (16 Dec 2016) by Jeff King (peff
).
See commit fbfda15 (11 Oct 2016) by Linus Torvalds (torvalds
).
(Merged by Junio C Hamano -- gitster
-- in commit ad1b4e2, 27 Dec 2016)
Linus Torvalds himself introduces this feature:
shortlog
: group by committer informationIn some situations you may want to group the commits not by author, but by committer instead.
For example, when I just wanted to look up what I'm still missing from
linux-next
in the current merge window, I don't care so much about who wrote a patch, as whatgit tree
it came from, which generally boils down to "who committed it".So make git shortlog take a "
-c
" or "--committer
" option to switch grouping to that.
Great answers by @pedro-nascimento, by @mic_e and others already solve the problem.
In addition, you can add the following line to your .gitconfig
contributors = shortlog -e --summary --numbered
or in shell type
git config --global alias.contributors 'shortlog -e --summary --numbered'
And after that you can simply invoke: git contributors
Another option can be:
git log --format='%aN' | sort -u
Another option is using the mergestat
CLI, which is a tool that allows you to run SQL queries on git history. So a query like:
SELECT
author_name,
author_email count(*),
count(*)
FROM commits
GROUP BY author_name, author_email
ORDER BY count(*) DESC
Will output a list of all commit authors in a repo, ordered by number of commits. Since it's just SQL, you can add filtering for commit timestamps, or sort by LOC added/removed, etc.
Full disclosure, I'm the maintainer/creator of the project, but wanted to share because I believe it could be useful for this type of use case.
There's also the summary
command which prints out git stats by author in a repo.
I am using GHI to open issues and where I can assign issues to specific users as long as I know their usernames
I don't if this is going to be helpful for someone but I am just going to leave the solution that worked for me here:
To get only the authors username from the GitHub I ran
git shortlog -sne | grep + | sed -e "s/.*+//; s/@.*//"
which will only list the username of the authors on the current project.
Then i can pick an username and assign an issue to him/her.
FOR ANYONE WHO WANTS TO OPEN ISSUES AND/OR ASSIGN TO SOMEONE FROM CMD/TERMINAL, HERE THE DOCUMENTATION OF THE GHI https://github.com/stephencelis/ghi
I haven't got around to testing it myself yet, but this looks really nice for project statistics for a Git repository: https://github.com/visionmedia/git-extras
Check out the bin
catalog to see the the different scripts.
For example, the git-count
script (commit count per committer):
git shortlog -n $@ | grep "):" | sed 's|:||'