¿Entiendo mal cómo funciona git grep --cached foo
? La ejecución de las versiones de git 1.6.4.4 o 1.6.5.2, git grep --cached foo
devuelve exactamente lo mismo que git grep foo
.git grep --cached
Pensé que funcionaría como git diff --cached
, buscando solo cambios en el área de ensayo. Eso es ciertamente lo que el man page me lleva a creer:
git diff [--options] --cached [<commit>] [--] [<path>…]
Este formulario es para ver los cambios que por etapas para la próxima confirmación en relación con el llamado
<commit>
. Normalmente, desea comparar con la última confirmación, por lo que si no da<commit>
, el valor predeterminado esHEAD
. SiHEAD
no existe (, por ejemplo,, ramas no nacidas) y<commit>
no se muestra, muestra todos los cambios por etapas.--staged
es un sinónimo de--cached
.
¿Es esto solo un error, o hay una forma alternativa/mejor de encontrar cambios que se cometen que mencionan foo?
git diff --cached | grep foo
El comando anterior me da la mitad de lo que quiero, pero pierde el contexto de qué archivo del cambio aparece en.
ACTUALIZACIÓN
Parece que tengo un error de concepto para lo que está mirando --cached
. Parece que está buscando el estado del árbol suponiendo que se aplica el área de ensayo. Eso tiene sentido, ahora que lo pienso. Lo que quiero para buscar es la diferencia, no el árbol completo.
Específicamente, quiero saber la lista de todos los archivos (no me preocupan los números de línea o el contexto) en los que estoy a punto de cometer SpecialLog(...)
, así que puedo editar esos archivos y eliminar SpecialLog
. Así que sí, puedo hacer git diff --cached
y buscar en el localizador el SpecialLog
, pero luego, para ver los grandes cambios en un solo archivo, hay muchos duplicados y no está claro qué archivo estoy viendo.
Gracias. Me ayudaste a comprender mi error conceptual (mira la actualización en la descripción). Entonces, lo que realmente estoy buscando es algo que combine git diff y grep. El buscapersonas funciona, pero no es lo que estoy buscando;) –
Ver la respuesta actualizada. –
¡Dulce! ¡Eso es exactamente lo que quería! –