¿Qué es Head in Git?

A veces, ves la documentación de Git que se refiere a algo llamado HEAD. Por ejemplo, la rama debe estar completamente integrada en HEAD. Pero, ¿qué es exactamente GIT HEAD?

En este artículo, conoceremos más sobre Git HEAD, pero antes de eso vamos a resumir qué es Git y para qué se utiliza. Git es una herramienta para el control distribuido que no solo utilizan los gerentes y desarrolladores de productos, sino también los científicos de datos para administrar el desarrollo del código fuente del programa y su historia.

HEAD Pointer en Git

Git mantiene una variable para hacer referencia, llamada HEAD a la última confirmación en la rama de pago reciente. Puedes imaginar HEAD como la "rama comprometida actual". Y podemos pensar como un puntero, ya que el propósito de esta variable es señalar o actuar como una referencia a un commit particular en el repositorio. Digamos, hacemos un nuevo commit en el repositorio, luego el puntero o HEAD se moverá o cambiará su posición para apuntar a un nuevo commit.

HEAD apunta al punto de partida de la rama actual en el repositorio en todo momento. Puede considerarse como el último estado o el último punto desprotegido en un repositorio. En otras palabras, HEAD es un puntero al progenitor de las próximas confirmaciones o dónde va a suceder la próxima confirmación, ya que es donde dejó el repositorio.

Una buena analogía sería un reproductor de discos y las teclas de reproducción y grabación como HEAD. Cuando el audio comienza a grabar, la cinta avanza pasando la cabeza al grabar en ella. El botón Detener detiene la grabación mientras todavía apunta al punto que grabó por última vez y el punto en que se detuvo el cabezal de grabación es donde continuará grabando nuevamente cuando se presione Grabar nuevamente. Si nos movemos, el puntero de la cabeza se mueve a diferentes lugares, sin embargo, cuando se presiona Grabar nuevamente, comienza a grabar desde el punto al que apuntaba la cabeza cuando se presiona Grabar.

En Git, puede usar el siguiente comando para ver qué señala el puntero HEAD.

cat .git / HEAD:

  • Muestra el contenido de .git / HEAD como se muestra a continuación
  • ref: refs / heads / master
  • Básicamente es una referencia simbólica a la última rama comprometida que verificó y efectivamente apunta a la confirmación al comienzo de la rama actual.

Cada vez que hacemos una nueva confirmación como se muestra a continuación, se agrega antes del HEAD actual, lo que hace que Git apunte automáticamente la HEAD a la nueva confirmación.

git diff HEAD..HEAD ~ 3: Más precisamente, HEAD es un puntero en movimiento que podría referirse a la rama actual, o no podría pero siempre se refiere a la "confirmación actual". Es (commit actual) es el commit “git commit” se construye encima y, a menudo, se compara con “git diff –cached” y “git status”.

git log @: escribir 'HEAD' lleva tiempo, especialmente cuando hay un atajo, '@' en su lugar. El símbolo '@' se elige porque sigue naturalmente la sintaxis (por ejemplo, por (u)), pero aparte de eso no hay referencia u operación, y cuando no hay ninguna de esas, 'HEAD 'se puede suponer en lugar de @.

1. CABEZA separada

Es posible que HEAD señale un cambio específico que aún no se ha vinculado a un nombre de sucursal. Esta es la situación que se denomina HEAD separada y ocurre cuando alguien extrae algo que no sea una rama (local), digamos un commit específico, una rama remota o una etiqueta. El HEAD separado, por lo tanto, se puede utilizar para pagar una confirmación que no apunta al punto de partida de ninguna rama existente, o para crear una confirmación nueva que no necesariamente hace referencia a una rama conocida.

Tomemos un ejemplo donde verificamos commit b de una u otra manera

  • git checkout master ^#o
  • git checkout v3.1

Tenga en cuenta que no importa qué comando de pago se use, HEAD ahora se referirá a commit b. Este estado de b se llama como estado HEAD separado.

Veamos los ejemplos a continuación para ver qué sucede cuando se crea una confirmación:

git checkout -b foo: Primero se crea una nueva rama llamada foo, que se refiere a commit f, que a su vez actualiza HEAD para apuntar a la rama foo. Esto significa que ya no estará en un estado HEAD separado.

git branch foo: Esto crea una nueva rama llamada foo, que se refiere a commit f, pero el HEAD se deja desconectado.

git tag foo: Esto también crea una nueva etiqueta llamada foo, que se conoce como commit f, pero el HEAD se deja desconectado.

Supongamos que ha cambiado a una posición distinta de commit f, luego el nombre del objeto debe recuperarse primero (normalmente mediante el comando git reflog) y luego se crea una referencia.

Para averiguar los dos últimos commits a los que HEAD se refiere, use cualquiera de los siguientes comandos:

  • git log -g -2 HEAD #o
  • git reflog -2 HEAD

2. ORIG_HEAD

Hay un tipo más de CABEZA que debes conocer. Los comandos "fusionar" o "extraer" siempre dejaron la punta original de la rama actual en algo llamado ORIG_HEAD. Se puede usar con los siguientes comandos.

git reset –hard ORIG_HEAD: Al usar esto, reset hard trae el archivo de índice junto con el árbol de trabajo a su estado original, mientras restablece la punta de la rama a ese commit, pero descarta los cambios locales.

git reset –merge ORIG_HEAD: Pero, ¿qué pasa si desea mantener los cambios locales, ya que puede utilizar el comando anterior para mantener los cambios locales? Además, la combinación siempre establece '.git / ORIG_HEAD' al estado original de HEAD una fusión problemática puede eliminarse usando 'git reset ORIG_HEAD'. Además de esto, la fusión establece '.git / ORIG_HEAD' al estado original de HEAD en todo momento para eliminar una fusión problemática mediante el uso de 'git reset ORIG_HEAD'.

Si tiene algún problema con las confirmaciones múltiples, ORIG_HEAD se establece en el punto de inicio de la rama actual antes de aplicar cualquier parche, ya que un error en las confirmaciones se puede solucionar más fácilmente de esta manera.

Ventajas de Git HEAD

  • Se utiliza para señalar la rama recientemente comprometida.
  • Se puede utilizar para realizar cambios desde el último punto visitado.
  • También se puede usar para moverse a diferentes puntos de la historia y trabajar desde allí.
  • Mantiene el repositorio y el proceso limpio y legible.

Conclusión

Git tiene muchos usos y es ampliamente utilizado por desarrolladores, gerentes de producto y científicos de datos. Sus comandos son muy efectivos y pueden ser muy útiles. HEAD es una referencia a la última confirmación en la rama actualmente desprotegida.

Artículos recomendados

Esta es una guía de ¿Qué es Head in Git? Aquí discutimos el puntero HEAD en Git que incluye HEAD separado y ORIG_HEAD junto con las ventajas de Git HEAD. También puede consultar los siguientes artículos para obtener más información:

  1. ¿Qué es Git Fetch?
  2. Git Fetch vs Git Pull
  3. ¿Qué es la rama de Git?
  4. Terminología Git
  5. Sistema de control de versiones GIT
  6. Git Push
  7. Tres etapas del ciclo de vida de Git con el flujo de trabajo
  8. ¿Cómo usar GIT Cherry-pick con Ejemplo?

Categoría: