¿Cómo hacer `git grep` solo en files que he confirmado?

¿Hay alguna manera de hacer que git grep solo coincida con los files que he confirmado?

El propósito es grep en el contenido del file, no el post de logging.

Si desea grep en el diff de una confirmación, probablemente debería usar git log -G o git log -S :

 git log -p --author="your name" -G pattern 

Tanto -G como -S searchán el patrón en la diferencia introducida por un compromiso,
la diferencia es ( git help log ):

Para ilustrar la diferencia entre -S<regex> --pickaxe-regex y -G<regex> , considere una confirmación con el siguiente diff en el mismo file:

 + return !regexec(regexp, two->ptr, 1, &regmatch, 0); ... - hit = !regexec(regexp, mf2.ptr, 1, &regmatch, 0); 

Mientras que git log -G"regexec\(regexp" mostrará este commit, git log -S"regexec\(regexp" --pickaxe-regex no lo hará (porque el número de ocurrencias de esa cadena no cambió).

Cuando utilice -p junto con -G o -S , solo se mostrarán los files que coincidan con el patrón.

 author="your name" git log --pretty="%H" --author="$author" | while read commit_hash; do git show --oneline --name-only $commit_hash | tail -n+2; done | sort | uniq |xargs grep -i "String to grep" 

O versión más corta:

 author="your name" git log --no-merges --author="$author" --name-only --pretty=format:"" | sort -u |xargs grep -i <string> 

Respuesta original utilizada para get los files de un usuario en particular