Pour rechercher du contenu de validation (c'est-à-dire des lignes de source réelles, par opposition aux messages de validation et autres), vous devez faire:
git grep <regexp> $(git rev-list --all)
git rev-list --all | xargs git grep <expression>
fonctionnera si vous rencontrez une erreur "Liste d'arguments trop longue".
Si vous voulez limiter la recherche à un sous-arbre (par exemple, "lib / util"), vous devrez le passer à la rev-list
sous-commande et grep
aussi:
git grep <regexp> $(git rev-list --all -- lib/util) -- lib/util
Cela va parcourir tout votre texte de validation pour regexp
.
La raison du passage du chemin dans les deux commandes est parce rev-list
que renverra la liste des révisions où toutes les modifications se sont lib/util
produites, mais vous devez également passer à grep
afin qu'il ne recherche que lib/util
.
Imaginez simplement le scénario suivant: grep
pourrait trouver la même chose <regexp>
sur d'autres fichiers qui sont contenus dans la même révision retournée par rev-list
(même s'il n'y a eu aucune modification de ce fichier sur cette révision).
Voici d'autres moyens utiles de rechercher votre source:
Rechercher dans l'arborescence de travail le texte correspondant à l'expression rationnelle expression régulière:
git grep <regexp>
Recherchez dans l'arborescence de travail des lignes de texte correspondant à l'expression régulière regexp1 ou regexp2:
git grep -e <regexp1> [--or] -e <regexp2>
Recherchez dans l'arborescence de travail les lignes de texte correspondant aux expressions régulières regexp1 et regexp2, en signalant uniquement les chemins d'accès aux fichiers:
git grep -l -e <regexp1> --and -e <regexp2>
Recherchez dans l'arborescence de travail des fichiers contenant des lignes de texte correspondant à l'expression régulière regexp1 et des lignes de texte correspondant à l'expression régulière regexp2:
git grep -l --all-match -e <regexp1> -e <regexp2>
Recherchez dans l'arbre de travail les lignes modifiées du modèle de correspondance de texte:
git diff --unified=0 | grep <pattern>
Rechercher toutes les révisions pour le texte correspondant à l'expression rationnelle expression régulière:
git grep <regexp> $(git rev-list --all)
Rechercher toutes les révisions entre rev1 et rev2 pour le texte correspondant à l'expression régulière expression régulière:
git grep <regexp> $(git rev-list <rev1>..<rev2>)
git log -S
et du blâme) * [Amusant avec "git log --grep"] [2] (recherche de messages de validation ) * [Amusant avec "git grep"] [3] [2]: gitster.livejournal.com/30195.html [3]: gitster.livejournal.com/27674.html