Aby wyszukać treść zatwierdzenia (tj. Rzeczywiste wiersze źródła, w przeciwieństwie do komunikatów zatwierdzania itp.), Musisz:
git grep <regexp> $(git rev-list --all)
git rev-list --all | xargs git grep <expression>
będzie działać, jeśli wystąpi błąd „Zbyt długa lista argumentów”.
Jeśli chcesz ograniczyć wyszukiwanie do pewnego poddrzewa (na przykład „lib / util”), musisz przekazać to do rev-list
podkomendy, a grep
także:
git grep <regexp> $(git rev-list --all -- lib/util) -- lib/util
Spowoduje to przejrzenie całego tekstu zatwierdzenia regexp
.
Powodem przekazania ścieżki w obu komendach jest to, że rev-list
zwróci listę poprawek, w której miały lib/util
miejsce wszystkie zmiany , ale musisz także przejść do, grep
aby tylko wyszukiwała lib/util
.
Wyobraź sobie następujący scenariusz: grep
może znaleźć to samo <regexp>
w innych plikach, które są zawarte w tej samej wersji zwróconej przez rev-list
(nawet jeśli nie było zmian w tym pliku w tej wersji).
Oto kilka innych przydatnych sposobów wyszukiwania źródła:
Wyszukaj w drzewie roboczym pasujące do wyrażenia regularnego wyrażenie regularne:
git grep <regexp>
Wyszukaj w drzewie roboczym wiersze tekstu pasujące do wyrażenia regularnego regexp1 lub regexp2:
git grep -e <regexp1> [--or] -e <regexp2>
Wyszukaj w drzewie roboczym wiersze tekstu pasujące do wyrażenia regularnego regexp1 i regexp2, zgłaszając tylko ścieżki plików:
git grep -l -e <regexp1> --and -e <regexp2>
Wyszukaj w drzewie roboczym pliki, których wiersze tekstu pasują do wyrażenia regularnego regexp1 i wiersze tekstu pasującego do wyrażenia regularnego regexp2:
git grep -l --all-match -e <regexp1> -e <regexp2>
Wyszukaj w drzewie roboczym zmienione linie wzoru dopasowania tekstu:
git diff --unified=0 | grep <pattern>
Wyszukaj we wszystkich wersjach wyrażenia regularne pasujące do wyrażenia regularnego:
git grep <regexp> $(git rev-list --all)
Wyszukaj we wszystkich wersjach między wersją 1 a wersją 2 wyrażenia regularne pasujące do wyrażenia regularnego:
git grep <regexp> $(git rev-list <rev1>..<rev2>)
git log -S
kilofów i obwinianiu) * [Zabawa z "git log - grep"] [2] (wyszukiwanie wiadomości zatwierdzenia ) * [Zabawa z „git grep”] [3] [2]: gitster.livejournal.com/30195.html [3]: gitster.livejournal.com/27674.html