ver update tag subir remote name modificados ignorar commits commands comentarios archivos git git-add

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