git grep
Procura texto nos arquivos rastreados
O comando 'git grep' procura nos arquivos que o Git rastreia e imprime cada linha correspondente com o nome do arquivo. É mais rápido que um grep comum em projetos grandes, ignora arquivos não rastreados e ignorados (como node_modules) e pode procurar em qualquer commit ou branch sem fazer checkout.
Sinopse
git grep [<options>] <pattern> [<tree>...] [--] [<pathspec>...]Opções
Escolhendo a opção certa
git grep vs grep
Por que usar a busca do próprio Git
| Comando | Procura em | Versões antigas |
|---|---|---|
grep -r | Todo arquivo no disco, inclusive node_modules | No |
git grep | Só arquivos rastreados | Sim: git grep x <commit> |
Exemplos
Procurar texto
git grep "cart"Cada linha de cada arquivo rastreado que contém cart.
Com números de linha
git grep -n "cart"Adiciona o número da linha.
Em outro commit
git grep "cart" v1.0Procura no projeto como era na v1.0.
Só alguns arquivos
git grep "TODO" -- "*.js"Limita a busca a arquivos JavaScript.
Exemplos de fluxos de trabalho
git grep -n "count("Cada chamada com sua linha
git grep -l "count("A lista de arquivos a editar
Solução de problemas
Sem saída, código de saída 1
Causa: Nada correspondeu
Confira a grafia, tente -i, ou verifique se o arquivo é rastreado
Um arquivo que você acabou de criar não é pesquisado
Causa: git grep só procura em arquivos rastreados
Faça git add, ou use git grep --untracked
Dicas e armadilhas
Boas práticas
- ✓Ative os números de linha uma vez: git config --global grep.lineNumber true.
- ✓Procure em versões antigas com git grep <pattern> <tag> em vez de fazer checkout delas.
Erros comuns
- ✗Esperar arquivos não rastreados nos resultados — adicione-os antes, ou use --untracked.
- ✗Esquecer as aspas em padrões com espaços ou caracteres especiais.
Perguntas frequentes
Sim: básicas por padrão, -E para estendidas, -P para sintaxe Perl.
Procura nas árvores que você indicar; para achar o commit que adicionou um texto, use git log -S "text".