Si vous souhaitez trouver toutes les validations où le message de validation contient un mot donné, utilisez
$ git log --grep=word
Si vous voulez trouver toutes les validations où "mot" a été ajouté ou supprimé dans le contenu du fichier (pour être plus précis: où le nombre d'occurrences de "mot" a changé), c'est-à-dire rechercher le contenu de la validation , utilisez la recherche dite "pioche" avec
$ git log -Sword
Dans git moderne il y a aussi
$ git log -Gword
pour rechercher les différences dont la ligne ajoutée ou supprimée correspond à "word" (également valider le contenu ).
Notez que -G
par défaut accepte une regex, tandis que -S
accepte une chaîne, mais peut être modifié pour accepter les regex en utilisant le --pickaxe-regex
.
Pour illustrer la différence entre -S<regex> --pickaxe-regex
et -G<regex>
, envisagez une validation avec la différence suivante dans le même fichier:
+ return !regexec(regexp, two->ptr, 1, ®match, 0);
...
- hit = !regexec(regexp, mf2.ptr, 1, ®match, 0);
While git log -G"regexec\(regexp"
affichera cette validation, git log -S"regexec\(regexp" --pickaxe-regex
ne le sera pas (car le nombre d'occurrences de cette chaîne n'a pas changé).
Avec Git 2.25.1 (février 2020), la documentation est clarifiée autour de ces expressions régulières.
Voir commit 9299f84 (06 fév 2020) de Martin Ågren (``) .
(Fusionné par Junio C Hamano - gitster
- en commit 0d11410 , 12 fév 2020)
diff-options.txt
: éviter la surcharge "regex" dans l'exemple
Signalé par: Adam Dinwoodie
Signé par: Martin Ågren Révisé
par: Taylor Blau
Lorsque nous illustrons la différence entre -G
et -S
(en utilisant --pickaxe-regex
), nous le faisons en utilisant un exemple de diff et d' git diff
invocation impliquant "regexec", "regexp", "regmatch", ...
L'exemple est correct, mais nous pouvons faciliter le démêlage en évitant d'écrire «regex. *» À moins que cela ne soit vraiment nécessaire pour faire valoir notre argument.
Utilisez plutôt des mots inventés et non-regexy.
La git diff
documentation comprend désormais:
Pour illustrer la différence entre -S<regex> --pickaxe-regex
et
-G<regex>
, envisagez une validation avec la différence suivante dans le même fichier:
+ return frotz(nitfol, two->ptr, 1, 0);
...
- hit = frotz(nitfol, mf2.ptr, 1, 0);
While git log -G"frotz\(nitfol"
affichera cette validation, git log
-S"frotz\(nitfol" --pickaxe-regex
ne le sera pas (car le nombre d'occurrences de cette chaîne n'a pas changé).