List all developers on a project in Git

Git

Git Problem Overview


Is it possible to list all users that contributed to a project (users that have done commits) in Git?

Any additional statistics?

Git Solutions


Solution 1 - Git

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

Solution 2 - Git

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 | uniq
  • %an author name
  • %ae author email
  • %n new line
  • %cn committer name
  • %ce committer email

Other placeholders are described in the pretty print documentation of git log.

Solution 3 - Git

You can try this:

git log | grep Author: | sort | uniq

Solution 4 - Git

> (users that have done commits)

Note: by default [git shortlog][1] 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 information

> In 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 what git 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. [1]: https://git-scm.com/docs/git-shortlog

Solution 5 - Git

Another option can be:

git log --format='%aN' | sort -u

Solution 6 - Git

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

Solution 7 - Git

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|:||'

Solution 8 - Git

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

Solution 9 - Git

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.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionRitam NemiraView Question on Stackoverflow
Solution 1 - GitPedro NascimentoView Answer on Stackoverflow
Solution 2 - GitGuillaume VincentView Answer on Stackoverflow
Solution 3 - GitSanta ZhangView Answer on Stackoverflow
Solution 4 - GitVonCView Answer on Stackoverflow
Solution 5 - GitΦXocę 웃 Пepeúpa ツView Answer on Stackoverflow
Solution 6 - Gituser4640261View Answer on Stackoverflow
Solution 7 - GitDaniel LeeView Answer on Stackoverflow
Solution 8 - GitFazli ZekiqiView Answer on Stackoverflow
Solution 9 - GitPatrick DeVivoView Answer on Stackoverflow