2013-08-16 7 views
15

私のGITリモートブランチのすべてを特定のファイルの内容(ファイルだけでなく、それらの内容)で検索することはできますか?GITリモートのファイル内容のすべてのブランチを検索しますか?

search-stringのために、すべてのリモートブランチを検索します
git grep 'search-string' $(git ls-remote . 'refs/remotes/*' | cut -f 2) 

私のリモコンは、あなたがこれを試すことができます...助け場合には、githubの上

答えて

19

です。シンボリックリファレンスHEADがミラーリングされているため、同じコミットを2回検索することになります。うまくいけばそれは問題ではない。あなたの全体の歴史を掘るする必要がある場合は

git grep 'search-string' \ 
    $(git ls-remote . 'refs/remotes/*' | grep -v HEAD | cut -f 2) 

、あなたも試すことができます:もしそうなら、あなたがそれをフィルタリングすることができます

git grep 'search-string' $(git rev-list --all) 
+0

2番目のコマンドは、私のために動作しますが、最初はしていません。私は 'fatal:bad flag ' - >'ファイル名の後に使用されます'を取得します。 – patrickvacek

+1

残念です。 'git branch -r'はその中の象徴的な参照の内容を表示することを忘れていました。私は、他の何かを使って自分の答えを更新しましたが、それほど美しくはありません。 – jszakmeister

4

あなたはすべてのリモートブランチこの意志を追跡していると仮定すると、すべてのコミットで検索します。

git log --all -p | grep 'search-string' 

すべてのリモートブランチを追跡するには、次の

for remote in `git branch -r`; do git branch --track $remote; done 
関連する問題