git grep
Busca texto en los archivos con seguimiento
El comando 'git grep' busca en los archivos que sigue Git e imprime cada línea que coincide con su nombre de archivo. Es más rápido que un grep normal en proyectos grandes, omite archivos sin seguimiento e ignorados (como node_modules) y puede buscar en cualquier commit o rama sin extraerla.
Sinopsis
git grep [<options>] <pattern> [<tree>...] [--] [<pathspec>...]Opciones
Elegir la opción adecuada
git grep vs grep
Por qué usar la búsqueda de Git
| Comando | Busca en | Versiones antiguas |
|---|---|---|
grep -r | Cada archivo del disco, incluido node_modules | No |
git grep | Solo archivos con seguimiento | Sí: git grep x <commit> |
Ejemplos
Buscar texto
git grep "cart"Cada línea de cada archivo con seguimiento que contiene cart.
Con números de línea
git grep -n "cart"Añade el número de línea.
En otro commit
git grep "cart" v1.0Busca en el proyecto tal como estaba en v1.0.
Solo algunos archivos
git grep "TODO" -- "*.js"Limita la búsqueda a archivos JavaScript.
Ejemplos de flujos de trabajo
git grep -n "count("Cada llamada con su línea
git grep -l "count("La lista de archivos que editar
Solución de problemas
Sin salida, código de salida 1
Causa: No hubo coincidencias
Revisa la ortografía, prueba -i, o comprueba que el archivo tiene seguimiento
No se busca en un archivo que acabas de crear
Causa: git grep solo busca en archivos con seguimiento
Haz git add, o usa git grep --untracked
Consejos y trampas
Buenas prácticas
- ✓Activa los números de línea una vez: git config --global grep.lineNumber true.
- ✓Busca en versiones antiguas con git grep <pattern> <tag> en lugar de extraerlas.
Errores comunes
- ✗Esperar archivos sin seguimiento en los resultados — añádelos antes, o usa --untracked.
- ✗Olvidar las comillas en patrones con espacios o caracteres especiales.
Preguntas frecuentes
Sí: básicas por defecto, -E para extendidas, -P para sintaxis Perl.
Busca en los árboles que nombras; para encontrar el commit que añadió un texto, usa git log -S "text".