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
).