2013-08-16 11 views

Antwort

19

Sie hilft dies versuchen:

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

, dass alle Remote-Niederlassungen für search-string suchen. Da die symbolische Referenz HEAD gespiegelt ist, können Sie am Ende denselben Commit zweimal suchen. Hoffentlich ist das kein Problem. Wenn ja, können Sie es herausfiltern, mit:

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

Wenn Sie durch Ihre gesamte Geschichte müssen graben, können Sie auch versuchen:

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

Zweiten Befehl funktioniert für mich, aber die ersten nicht; Ich bekomme 'fatal: bad flag '->' nach Dateiname verwendet ' – patrickvacek

+1

Entschuldigung. Ich habe vergessen, dass 'git branch -r' den Inhalt von symbolischen refs darin anzeigt. Ich habe meine Antwort mit etwas anderem aktualisiert, das funktioniert, aber nicht ganz so hübsch. – jszakmeister

4

Angenommen, Sie alle entfernten Niederlassungen sind Tracking Dies wird suche es in allen commits.

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

Um alle entfernten Niederlassungen zu verfolgen:

for remote in `git branch -r`; do git branch --track $remote; done