質問: Git で管理しているプロジェクトにおいて、自分の変更した範囲で grep をかけたいです。 コミットを指定するか、あるいはブランチを指定するなどの方法でも良いです。 Rubymine でできれば良いですが、他の方法でも。みなさんどのようにやっているのでしょうか?
回答: ### ターミナル上で調べる Git 1.7.4 以降で `git log -G --author=` が使えます。 今回の目的だと、以下のオプションが便利でしょう。 * 検索範囲を指定する + `--all` + `--branches[=]` + `--tags[=]` * コミットの diff を表示する + `-c`: diff を表示する。 + `--cc`: 短く diff を表示する。 RubyMine を使うなら、RubyMine 上の Terminal を起動してこのコマンドを打ち込むことができます。Terminal は `Shift` - `Shift` で起動する検索ウィンドウから探すか、メニューの "View" → "Tool Windows" → "Terminal" から起動できます。 何回も使うなら、エイリアスを設定すると便利です。 ### その他の Git コマンド * `git log -S`: `-G` オプションと似たオプションです。`--pickaxe-regex`をつけると正規表現にもできます。 * `git grep $(git rev-list --all --author=)`: 同じようなことを別のコマンドで行う方法です。これを使うと行単位で出力されます。 (詳しくは Jeet さんの Stack Overflow への投稿を参照してください) ### 参考 * "How to grep (search) committed code in the git history?" -- Stack Overflow + 上の質問の類似質問たち + "How to grep Git commit diffs or contents for a certain word?" -- Stack Overflow + "Is it possible to perform a 'grep search' in all the branches of git project" -- Stack Overflow + "Using git, how could I search for a string across all branches?" -- Stack Overflow