git grep
Chercher du texte dans les fichiers suivis
La commande 'git grep' cherche dans les fichiers suivis par Git et affiche chaque ligne correspondante avec son nom de fichier. Elle est plus rapide qu’un grep normal sur les gros projets, ignore les fichiers non suivis et ignorés (comme node_modules), et peut chercher dans n’importe quel commit ou branche sans l’extraire.
Synopsis
git grep [<options>] <pattern> [<tree>...] [--] [<pathspec>...]Options
Choisir la bonne option
git grep vs grep
Pourquoi utiliser la recherche de Git
| Commande | Cherche dans | Anciennes versions |
|---|---|---|
grep -r | Chaque fichier du disque, y compris node_modules | No |
git grep | Seulement les fichiers suivis | Oui : git grep x <commit> |
Exemples
Chercher du texte
git grep "cart"Chaque ligne de chaque fichier suivi qui contient cart.
Avec les numéros de ligne
git grep -n "cart"Ajoute le numéro de ligne.
Dans un autre commit
git grep "cart" v1.0Chercher dans le projet tel qu’il était en v1.0.
Seulement certains fichiers
git grep "TODO" -- "*.js"Limiter la recherche aux fichiers JavaScript.
Exemples de workflows
git grep -n "count("Chaque appel avec sa ligne
git grep -l "count("La liste des fichiers à modifier
Dépannage
Aucune sortie, code de sortie 1
Cause : Rien ne correspond
Vérifiez l’orthographe, essayez -i, ou vérifiez que le fichier est suivi
Un fichier que vous venez de créer n’est pas fouillé
Cause : git grep ne cherche que dans les fichiers suivis
Faites git add, ou utilisez git grep --untracked
Astuces et pièges
Bonnes pratiques
- ✓Activez les numéros de ligne une fois : git config --global grep.lineNumber true.
- ✓Cherchez dans les anciennes versions avec git grep <pattern> <tag> au lieu de les extraire.
Erreurs fréquentes
- ✗S’attendre à voir des fichiers non suivis dans les résultats — ajoutez-les d’abord, ou utilisez --untracked.
- ✗Oublier les guillemets autour des motifs contenant des espaces ou des caractères spéciaux.
FAQ
Oui : basiques par défaut, -E pour étendues, -P pour la syntaxe Perl.
Il cherche dans les arbres que vous nommez ; pour trouver le commit qui a ajouté un texte, utilisez git log -S "text".