履歴

git shortlog

コミット履歴を著者ごとにまとめて表示します。コントリビューターの貢献度確認やリリースノートの作成に活用できます。

構文 git shortlog [options] [<revision range>] [[--] <path>...]

オプション

フラグ 説明
-n, --numbered コミット数の多い順(降順)に著者を並べ替えて表示します。
-s, --summary 各著者のコミット一覧を省略し、コミット数だけを表示します。
-e, --email 著者名に加えてメールアドレスも表示します。同一人物の名前揺れを検出するのにも便利です。
--since=<date>, --after=<date> 指定した日時以降のコミットだけを集計します(例: --since='1 month ago')。
-w[<width>[,<indent1>[,<indent2>]]] 出力を指定した文字数で折り返します。デフォルトは76文字です。

git shortlog はコミット履歴を著者ごとにグループ化して表示するコマンドです。git log の出力をそのまま受け取ることもでき、OSSプロジェクトのコントリビューター一覧作成やリリースノートの生成に広く使われています。

基本的な使い方

# 著者ごとのコミット一覧を表示
git shortlog

# コミット数の多い順に表示
git shortlog -n

# コミット数だけを表示(コミットリストを省略)
git shortlog -sn

出力例(git shortlog -sn

    42  Taro Yamada
    17  Hanako Sato
     5  Jiro Suzuki

コントリビューターの貢献度を確認する

プロジェクト全体の貢献者数やコミット数をすばやく把握できます。

# コミット数の多い順にコントリビューターを表示
git shortlog -sn

# メールアドレスも含めて表示(名前の揺れを検出するのに便利)
git shortlog -sne

期間を絞って集計する

# 直近1ヶ月のコントリビューターをコミット数順に表示
git shortlog -sn --since="1 month ago"

# 特定の日付以降を対象にする
git shortlog -sn --after="2025-01-01"

パイプを使った活用

git log の出力を git shortlog にパイプで渡すことで、フィルタリング済みのログをそのまま集計できます。

# 直近50件のコミットを著者別に集計
git log --oneline -50 | git shortlog

# 特定ファイルの変更を著者別に集計
git log --oneline -- src/index.js | git shortlog

リリースノートへの応用

タグ間のコントリビューター一覧を生成し、リリースノートに活用できます。

# v1.0.0 から v2.0.0 の間のコントリビューター一覧
git shortlog -sn v1.0.0..v2.0.0

# 現在のブランチでまだマージされていないコミットの著者
git shortlog -sn main..HEAD

git log との比較:著者別コミット数を集計する

著者別のコミット数を手動で集計する場合と比べて、git shortlog はシンプルに書けます。

# 手動で集計する場合(長い)
git log --format='%aN' | sort | uniq -c | sort -rn

# git shortlog を使う場合(シンプル)
git shortlog -sn

どちらも同じ結果が得られますが、git shortlog の方が意図が明確で読みやすいです。

ヒント

  • git shortlog -sne HEAD のように HEAD を指定すると、現在のブランチ全体の集計を明示できます。
  • CI スクリプトでコントリビューター数を自動カウントする場合は git shortlog -s | wc -l が便利です。