2015/05/30

git log で特定のコミッタをフィルタする

[git]

git log の出力を特定のコミッタのものだけに絞りたいときは git log --author=foo ってできるのだけど、git log --not-author=foo 的なことは存外できなくて困った。というのも、特定の人の差分がどうしても巨大になってしまう場面というのがあって、しばらく頑張ってスクロールして逃れてたのだけど、ページ送りでスクロールしても許容できないレベルになったのでチラッと調べてみた。

結論として、以下のような関数を .bashrc に書いて心の安息を得た。

function git-log-exclude-author() {
  G=''
  for n in $@
    do
      G=$G"| /bin/grep -v $n "
  done
  eval "git log --format='%H %an' $G | cut -d' ' -f1 | xargs -n1 git --no-pager log -p -1";
}

以下のようにすると、foo さんと bar さんのコミットはフィルタされる。

$ git-log-exclude-author foo bar | less -r

リポジトリの分割は用法用量を守って。

See Also

サイト内検索