通常、発行git grep
すると、現在のディレクトリ以下のみが検索されます。たとえば、
$ cat A
1
$ cd d
$ cat B
1
$ git grep 1
B:1
$ cd ..;git grep 1
A:1
B:1
git grep
「現在の作業ディレクトリに関係なく、ツリー全体を検索する」ことをどのように伝えることができますか?
シェル コマンドを実行する Git エイリアスは常に最上位のディレクトリで実行されるため ( git config
man ページを参照)、これを.gitconfig
ファイルに追加できます。
[alias]
rgrep = !git grep
または、 を使用git rev-parse --show-toplevel
してルート ディレクトリを取得し、それをgit grep
スクリプトまたはエイリアスのベースとして渡すことができます。
git grep $pattern -- `git rev-parse --show-toplevel`
これをGit構成ファイルに追加して、必要な処理を実行するgrepall
エイリアスを作成します。
[alias]
grepall = !git grep
(非ネイティブエイリアス、たとえば、で始まるエイリアスは、!
常にリポジトリの最上位から実行されます。)