No git 1.9.0, a "palavra mágica" exclude
foi adicionada a pathspec
s. Portanto, se você deseja pesquisar foobar
em todos os arquivos, exceto os correspondentes, *.java
pode:
git grep foobar -- './*' ':(exclude)*.java'
Ou usando o !
"formato abreviado" para excluir:
git grep foobar -- './*' ':!*.java'
Observe que nas versões git até a v2.12, ao usar uma exclusão pathspec
, você deve ter pelo menos uma "inclusiva" pathspec
. Nos exemplos acima, este é o ./*
(inclua recursivamente tudo no diretório atual). No git v2.13, essa restrição foi levantada e git grep foobar -- ':!*.java'
funciona sem o ./*
.
Você também pode usar algo como :(top)
(formato abreviado:) :/
para incluir tudo, desde a parte superior do repositório. Mas então você provavelmente também desejaria ajustar sua exclusão pathspec
para começar do topo: :/!*.java
(caso contrário, apenas excluiria *.java
arquivos do diretório atual).
Há uma boa referência para todas as "palavras mágicas" permitidas pathspec
no site git-scm.com (ou apenas git help glossary
). Por alguma razão, os documentos em kernel.org estão realmente desatualizados, embora geralmente sejam os primeiros nas pesquisas do Google.