update - ignorar archivos git
Actualizar archivos en etapas (2)
En git, ¿hay alguna forma (simple) de modificar el índice para que solo se agreguen los cambios a los archivos que ya están en él? Suena un poco complicado, pero lo que quiero lograr es simple.
Digamos que mi índice se parece a esto (salida de git status ligeramente eliminada):
# Changes to be committed:
# modified: A
# modified: B
#
# Changed but not updated:
# modified: B
# modified: C
#
# Untracked files:
# D
Algunos cambios a B están en el índice, otros no. C no es puesta en escena en absoluto.
¿Cómo puedo actualizar B en el índice (etapa de sus cambios sin etapas) sin agregar C ?
Es decir, me gustaría que el índice se vea así:
# Changes to be committed:
# modified: A
# modified: B
#
# Changed but not updated:
# modified: C
#
# Untracked files:
# D
En este caso simple, por supuesto, se puede lograr con un simple git add B , pero me gustaría saber si hay una respuesta simple para el caso general. Intenté git add --refresh , pero si lo comprendo correctamente, solo se actualiza la información estadística.
El siguiente comando actualizará el índice para que contenga los otros cambios en B que aún no se han efectuado:
git update-index --again
No sé de una manera completamente trivial para hacer esto, pero:
git status --porcelain
mostrará el archivo B (y solo B) como estado "MM", por lo que:
git status --porcelain | grep ^MM | cut -d'' '' -f 2
producirá una lista de dichos archivos.
No hay daño en "re-agregar" A, sin embargo.
También puedes usar git diff-index --cached --name-status HEAD . (Podría necesitar esto si su git es demasiado viejo para tener el git status --porcelain ).