Git HEAD^ vs Git HEAD~ vs Git HEAD{@}
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.
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.
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.
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~
.
John is a Git and PowerShell geek. He uses his expertise in the version control system to help businesses manage their source code. According to him, Shell scripting is the number one choice for automating the management of systems.
LinkedIn