Skip to main content
gx who identifies the top contributors to your repo by commit count, with smart deduplication to merge multiple git identities belonging to the same person.

Usage

gx who [path] [flags]

Flags

FlagShortDefaultDescription
--number-n5Number of contributors to show
--sinceOnly consider commits after this date (e.g., 6months, 2024-01-01)
--no-limitfalseRemove file cap for directory analysis

Example

$ gx who

Top contributors

 #  Author          Email                                       Commits  Last Active
 ─────────────────────────────────────────────────────────────────────────────────────
 1  Sarah Chen      sarahchen@users.noreply.github..             953      1 month ago
 2  James Wilson    james.w@example.com                         138      7 months ago
 3  You             you@users.noreply.gith...                   53       28 months ago
 4  Alex Kim        alex.kim@example.com                        45       31 months ago
 5  Maria Lopez     maria.l@example.com                         19       31 months ago

You: Your Name <you@users.noreply.github.com>
The “You” row is highlighted in green and matched by your git config user.email. The footer shows your exact git credentials for reference.

Identity Deduplication

Git users often have multiple identities (personal email, work email, GitHub noreply address). gx merges these using a union-find algorithm that links identities sharing any of:
  • Email address: exact match (case-insensitive)
  • Email username: the part before @ (e.g., kim from kim@example.com and kim@work.com)
  • Author name: case-insensitive match
This means a contributor who has committed as Kim <kim@example.com> and Kim <kim@work.com> appears as a single entry with both emails listed. The longest name is kept as the display name (usually the real full name).

More Examples

Show the top 10 contributors:
gx who -n 10
Only count contributions from the last 6 months:
gx who --since 6months
Only count contributions since a specific date:
gx who --since 2024-01-01
  1. Runs git shortlog -sne --all to gather all contributors across all branches
  2. Parses each line into name, email, and commit count
  3. Applies union-find deduplication: any two entries sharing an email, email username (before @), or lowercase name get merged
  4. The merged entry keeps the longest name and sums all commit counts
  5. All unique emails are collected into the Email column
  6. “You” is detected by matching git config user.email against the email set
  7. Results are sorted by commit count descending