git grep
Sucht Text in verfolgten Dateien
Der Befehl 'git grep' durchsucht die Dateien, die Git verfolgt, und gibt jede passende Zeile mit Dateinamen aus. Er ist bei großen Projekten schneller als ein normales grep, überspringt unverfolgte und ignorierte Dateien (wie node_modules) und kann jeden Commit oder Branch durchsuchen, ohne ihn auszuchecken.
Syntax
git grep [<options>] <pattern> [<tree>...] [--] [<pathspec>...]Optionen
Die richtige Option wählen
git grep vs grep
Warum Gits eigene Suche
| Befehl | Durchsucht | Alte Versionen |
|---|---|---|
grep -r | Jede Datei auf der Platte, auch node_modules | No |
git grep | Nur verfolgte Dateien | Ja: git grep x <commit> |
Beispiele
Text suchen
git grep "cart"Jede Zeile jeder verfolgten Datei, die cart enthält.
Mit Zeilennummern
git grep -n "cart"Ergänzt die Zeilennummer.
In einem anderen Commit
git grep "cart" v1.0Durchsucht das Projekt, wie es bei v1.0 war.
Nur einige Dateien
git grep "TODO" -- "*.js"Die Suche auf JavaScript-Dateien beschränken.
Workflow-Beispiele
git grep -n "count("Jeder Aufruf mit seiner Zeile
git grep -l "count("Die Liste der zu bearbeitenden Dateien
Fehlerbehebung
Keine Ausgabe, Exit-Code 1
Ursache: Nichts gefunden
Prüfe die Schreibweise, versuche -i, oder prüfe, ob die Datei verfolgt ist
Eine gerade erstellte Datei wird nicht durchsucht
Ursache: git grep durchsucht nur verfolgte Dateien
Führe git add aus, oder nutze git grep --untracked
Tipps & Stolperfallen
Best Practices
- ✓Aktiviere Zeilennummern einmal: git config --global grep.lineNumber true.
- ✓Durchsuche alte Releases mit git grep <pattern> <tag>, statt sie auszuchecken.
Häufige Fehler
- ✗Unverfolgte Dateien in den Treffern erwarten — füge sie zuerst hinzu oder nutze --untracked.
- ✗Anführungszeichen um Muster mit Leerzeichen oder Sonderzeichen vergessen.
FAQ
Ja: standardmäßig einfache, -E für erweiterte, -P für Perl-Syntax.
Es durchsucht die Trees, die du nennst; den Commit, der einen Text hinzufügte, findest du mit git log -S "text".