Da Anonimo (non verificato) , 29 Aprile 2026

Sinossi

git grep [<options>] <pattern> [<tree-ish>...]

Descrizione

Il comando git grep cerca file tracciati da Git per un pattern. È molto più veloce di grep -r su repository grandi perché cerca solo ciò che Git conosce (saltando .git, output di build e file ignorati) e usa il database degli oggetti ottimizzato di Git. Puoi anche cercare in qualsiasi revisione storica o tree, non solo nella copia di lavoro.

I pattern possono essere stringhe semplici, regex base (default), regex estese (-E) o PCRE (-P se compilato). Usa git grep invece di grep -r in script che operano su repository Git.

Nell'uso quotidiano, git grep si integra con alias e CI.

Capire il modello dati di Git aiuta a prevedere i risultati.

Opzioni comuni

OpzioneDescrizione
-iMatch case-insensitive.
-nMostra numeri di riga.
-lElenca solo i nomi dei file che fanno match.
-EEspressioni regolari estese.
-PRegex Perl-compatible.
-wMatch parole intere.
--cachedCerca nell'index invece che nella working tree.
--untrackedCerca anche file untracked non ignorati.

Esempi

git grep "TODO"
# Trova ogni TODO nei file tracciati

git grep -n -i "deprecated" src/
# Case-insensitive, con numeri di riga, sotto src/

git grep "fooBar" v1.0.0
# Cerca nel tree del tag v1.0.0

git grep -E "^(import|from) " --and -e "json"
# Pattern combinati: righe che iniziano con import/from che menzionano json

Errori comuni

Dimenticare che git grep cerca solo file tracciati — i file appena aggiunti non appariranno a meno che siano in stage o tu passi --untracked. Le funzionalità PCRE (\b, lookbehind) richiedono Git compilato con supporto PCRE e il flag -P.

Comandi correlati

git log -S, git log -G, git ls-files, git show