久々投稿です.

チーム開発を行っていると,自分が担当していない部分のコードやフォルダについてはほとんど知識がない,ということはそこそこあることなんじゃないかと思います.

しかしそんな自分がよく知らない部分のコードやフォルダがどうなっているのか確認したいときというのは時折発生するものです. そんなとき誰に聞きに行けばいいのか,というのは色々な決め方があると思いますが,「最新のコードを最も形づくった人」に聞くというのは1つの方法かなと思います.

以下のコマンドを叩くと,コマンドを叩いたフォルダ以下の全ファイルに対して最も貢献した人がランキング順で表示されます.

git ls-tree --name-only -r HEAD | xargs -n1 git blame --line-porcelain | grep "^author " | sort | uniq -c | sort -nr

実行結果の例は以下のような感じです. 右がauthor名で,左がそのauthorに帰属する(フォルダ以下の)コードの行数です.

$ git ls-tree --name-only -r HEAD | xargs -n1 git blame --line-porcelain | grep "^author " | sort | uniq -c | sort -nr
20373 author cafeunder
2927 author Akomd
470 author bakanaouji

特定の拡張子のファイルについてのみを対象にしたい場合,以下のようにすれば良いです.

git ls-tree --name-only -r HEAD | grep -Z -E '\.(html|js|css)$' | xargs -n1 git blame --line-porcelain | grep "^author " | sort | uniq -c | sort -nr

あるフォルダ直下に対してのみ調べたい場合は,git ls-tree-rオプションを取り除きましょう.

git blameは意外と便利なので,どんどん使っていきたいですね!