Git で過去のコミットを含めてソースコードを Grep する

「昔あんなコードを書いた記憶があるけど、今のコード内からは削除してしまっているなぁ…」なんていう時に、過去のコミット中のソースコードに対して Grep したくなる。そのやり方。git rev-listgit grep を併用する。

$ git rev-list HEAD | xargs git grep '検索文字列'

# 出力例 … こんな感じでコミット ID とファイルパス・そして該当した行が出力される
$ git rev-list HEAD | xargs git grep "require('express')"
5b845f7c6499bf1953b86d1bcaf0a03f2486f2ed:src/pages/blog/2018/05/12-02.md:const express = require('express');
e4d6d788aa8adb2e3fa4d597b0ff569afff9019d:src/pages/blog/2018/12/05-01.md:const express = require('express');
$ git rev-list 【ブランチ名】 | xargs git grep '検索文字列'
$ git rev-list --all | xargs git grep '検索文字列'

以上。