git shortlog
コミット履歴を著者ごとにまとめて表示します。コントリビューターの貢献度確認やリリースノートの作成に活用できます。
構文
git shortlog [options] [<revision range>] [[--] <path>...] 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が便利です。