HOWTO · Git

Git HEAD^ vs Git HEAD~ vs Git HEAD{@}

En este artículo, discutiremos la diferencia entre un signo de intercalación de Git y una tilde de Git.

En esta página

Este artículo discutirá la diferencia entre un signo de intercalación de Git y una tilde de Git. Un símbolo de intercalación de Git se representa con ^, mientras que una tilde se representa con ~.

También hablaremos del HEAD{@}. Empecemos.

Git HEAD^ (intercalación)

Al introducir un signo de intercalación en Git HEAD, apuntamos al primer padre de el commit. Por lo tanto, git HEAD^2 apunta al segundo padre de el commit.

¿Qué es el padre de un commit?

El padre de un commit entra en juego cuando fusionamos una o más ramas con otra. Veamos un ejemplo.

Nuestro repositorio tiene la rama Master en verde y la rama Other-Branch en amarillo.

git HEAD ^

Nuestro compromiso E en la other-branch se fusiona con el commit A en la rama maestra. Como tal, podemos decir que el commit A tiene dos commits principales.

Por lo tanto, un commit principal es simplemente el commit anterior de un commit.

Mira los comandos a continuación.

$ git show HEAD^ --oneline

Ejecutar el comando anterior moverá nuestro HEAD en el commit B si estamos en el commit A.

$ git show HEAD^2 --oneline

Por otro lado, el comando anterior cambiará nuestro HEAD para confirmar E.

Tenga en cuenta que HEAD^ y HEAD^1 tienen el mismo propósito.

Vale la pena señalar que la explicación anterior solo se aplica cuando tenemos ramas fusionadas. Si está trabajando con una rama, entonces HEAD^ será el equivalente de HEAD~.

Git CABEZA~ (Tilde)

Agregar una tilde a los puntos HEAD en el commit anterior de la última confirmación en nuestra rama. Es como retroceder en línea recta.

Veamos un ejemplo.

git HEAD ~

Por lo tanto, si nuestro HEAD está en el commit A, entonces git HEAD~ o git HEAD~1 nos cambiará a el commit B. HEAD~2 nos cambiará a cometer C.

Si estamos desprotegidos en el commit E en la other-branch, HEAD~1 nos cambiará al compromiso F y así sucesivamente.

Git HEAD{@}

Esta combinación apunta a la posición de la referencia en un momento determinado en nuestro repositorio local. Por lo general, aparece cuando se ejecuta un comando git reflog, como se muestra a continuación.

comando git reflog

En pocas palabras, un signo de intercalación es útil cuando fusionamos ramas en otras ramas y necesitamos cambiar a un commit en una rama diferente. La tilde nos permite cambiar a un commit anterior de la última confirmación en una rama específica.

Cuando se trabaja en una sola rama, HEAD^ es lo mismo que HEAD~.