Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

Gitブランチ検索を可能とするgit grepは実際便利

git grepは基本grepと同じ使い方ができます。
独自の機能として

  • git管理ディレクトリのみを捜索
  • ブランチを跨いだ捜索も可能
  • 本家にはない、ワード条件の特殊構文

があります。
多人数で管理しているプロジェクトでは威力を発揮しそうです。

実例

複雑な条件式

git grep -e '#define' --and \( -e MAX_PATH -e PATH_MAX \)

#define を含み、かつMAX_PATHまたはPATH_MAXを持つモノ。
"--and"は本家grepにはないもので、入り込んだ奴を書く時にも楽です。

複数ディレクトリ

bashで"SLEEP"という文字列を全てのディレクトリから探し出す

$ for var in `git branch | sed "s/\*/ /g"`; do git grep "SLEEP" ${var} --; done

毎回毎回、qして閉じないといけません。
それを嫌う場合、ファイルに出力してしまうのも手ですね。