En git 1.9.0 la "palabra mágica" exclude
se agregó a pathspec
s. Entonces, si desea buscar foobar
en todos los archivos, excepto los que coinciden *.java
, puede hacer:
git grep foobar -- './*' ':(exclude)*.java'
O usando la !
"forma corta" para excluir:
git grep foobar -- './*' ':!*.java'
Tenga en cuenta que en las versiones de git hasta v2.12, cuando se utiliza una exclusión pathspec
, debe tener al menos un "inclusivo" pathspec
. En los ejemplos anteriores, este es el ./*
(incluya recursivamente todo en el directorio actual). En git v2.13 esta restricción se levantó y git grep foobar -- ':!*.java'
funciona sin el ./*
.
También puede usar algo como :(top)
(forma corta:) :/
para incluir todo desde la parte superior del repositorio. Pero es probable que también desee ajustar su exclusión pathspec
para comenzar también desde arriba: :/!*.java
(de lo contrario, solo excluiría *.java
archivos de su directorio actual).
Hay una buena referencia para todas las "palabras mágicas" que puede contener un pathspec
a git-scm.com (o sólo git help glossary
). Por alguna razón, los documentos en kernel.org están realmente desactualizados, aunque a menudo aparecen primero en las búsquedas de Google.