¿Por qué pagar y restablecer cambian el índice?

Pensé que el índice es solo para los files que organizó para la próxima confirmación, pero tanto el reinicio como el process de compra también actualizan el índice:

git pago y envío

Para prepararse para trabajar, cambie a él actualizando el índice y los files en el tree de trabajo,

  • git reset puede cambiar solo HEAD ( git reset --soft ) o HEAD e index (pnetworkingeterminado), o HEAD index y working tree ( git reset --hard ).
  • git checkout puede cambiar el índice solo cuando se cambia de twig, para que pueda empezar a organizar su trabajo en function del contenido de esa twig.

Esa discusión señala por qué el pago cambia el índice:

Mi comprensión del índice es que es el intermediario para:

  • mover cosas de su tree de trabajo a la tienda de objects
  • Y para mover cosas de la tienda de objects a su tree de trabajo.

Por lo tanto, cuando finaliza la compra del blob, primero se copy de la tienda de objects a su índice y luego del índice a su tree de trabajo.


torek menciona en los comentarios algo que refleja otra parte del mismo hilo:

Tenga en count que puede omitir la escritura a través del índice usando git show para extraer el file:

 git show HEAD~3:file > file 

sobrescribirá la versión del file de trabajo del file , al igual que git checkout HEAD~3 -- file , pero no actualizará el índice .

git show en más detalle en " ¿Cómo recuperar un único file de una revisión específica en Git? ".

Tenga en count también que git-show no aplica filters al file (borrado / limpieza o cualquier personalizado).

Después de un pago o reinicio limpio, el contenido de HEAD es el mismo que el índice y el contenido del tree de trabajo.

Después, generalmente cambias tu tree de trabajo, luego actualizas el índice usando git add y finalmente conviertes el índice resultante en un commit usando git commit .

El índice funciona de manera muy similar a su tree de trabajo: Usted comienza por el contenido actual de la confirmación, cambia algunos files y finalmente hace que el resultado sea un compromiso.

Si cambia su confirmación actual usando git checkout o git reset , el índice tiene que cambiar, para permitirle cambiarlo para crear una nueva confirmación.

La idea es que git siempre confiere instantáneas del estado actual y no solo diffs. Por lo tanto, al realizar un pago, el índice se actualizará para contener una instantánea de lo que acaba de retirar, que luego cambiará al agregar files / cambios.

Mi pregunta es porque funcioné bajo la suposition incorrecta de que solo se agregarían cambios al índice.