Pro Git
Pro Git Una manera más fácil de pensar sobre reset y checkout es a través del marco mental de Git como administrador de contenido de tres árboles diferentes. Por “árbol”, aquí realmente queremos decir “colección de archivos”, no específicamente la estructura de datos. (Hay algunos casos donde el índice no funciona exactamente como un árbol, pero para nuestros propósitos es más fácil pensarlo de esta manera por ahora).
Git como sistema maneja y manipula tres árboles en su operación normal:
Árbol RolHEAD
Última instantánea del commit, próximo padre
Índice
Siguiente instantánea del commit propuesta
Directorio de Trabajo
Caja de Arena
HEAD es el puntero a la referencia de bifurcación actual, que es, a su vez, un puntero al último commit realizado en esa rama. Eso significa que HEAD será el padre del próximo commit que se cree. En general, es más simple pensar en HEAD como la instantánea de tu último commit.
De hecho, es bastante fácil ver cómo es el aspecto de esa instantánea. Aquí hay un ejemplo de cómo obtener la lista del directorio real y las sumas de comprobación SHA-1 para cada archivo en la instantánea de HEAD: