2012-06-03 7 views
5

は、通常、私はgit grepを発行したとき、それが唯一のインスタンスサブディレクトリにあるときにツリー全体でgrepを実行するには?

$ cat A 
1 
$ cd d 
$ cat B 
1 
$ git grep 1 
B:1 
$ cd ..;git grep 1 
A:1 
B:1 

のために、下記のカレントディレクトリを検索しますどのように私は、「ツリー全体、私がいるよどんなに現在の作業ディレクトリを検索」git grepを伝えることができますか?

答えて

8

Gitのあなたの.gitconfigファイルにこれを追加することができますので、シェルコマンドは、常にトップレベルのディレクトリ(git config man pageを参照)で実行されている実行別名:

[alias] 
    rgrep = !git grep 

また、あなたが取得するgit rev-parse --show-toplevelを使用することができますあなたは、スクリプトまたは別名の基礎としてgit grepに渡すことができ、ルートディレクトリ、:

git grep $pattern -- `git rev-parse --show-toplevel` 
+0

は私がいることを知っていたが、それはとても長く、不格好だ...私は答えを更新 –

+0

のgrep-ALL' 'のようなものを希望;) – georgebrock

+0

をまだ理想的ではなく、パスがトップレベルから実行されませんので、しかし、素敵な。 –

0

はそのD意志grepallエイリアスを作るためにあなたのGitの設定ファイルにこれを追加あなたが望むもの:

[alias] 
    grepall = !git grep 

(非ネイティブエイリアス。 !で始まるものは、常にリポジトリのトップレベルから実行されます。)

+0

まだ理想的ではありません。パスは現在のディレクトリからは表示されないため、感謝します。 –

関連する問題