Git HEAD^ contre Git HEAD~ contre Git HEAD{@}
Cet article discutera de la différence entre un caret Git et un tilde Git. Un caret Git est représenté par ^
tandis qu’un tilde est représenté par ~
.
Nous parlerons également du HEAD{@}
. Commençons.
Git HEAD^
(Caret)
Lors de l’introduction d’un caret dans Git HEAD
, nous pointons vers le premier parent du commit. Ainsi git HEAD^2
pointe vers le second parent du commit.
Qu’est-ce que le parent d’un commit ?
Le parent d’un commit entre en jeu lorsque nous fusionnons une ou plusieurs branches avec une autre. Prenons un exemple.
Notre repo a la branche Master
en vert et la branche Other-Branch
en jaune.
Notre commit E
sur la branche other-branch
est fusionné avec le commit A
sur la branche master
. En tant que tel, nous pouvons dire que le commit A
a deux commits parents.
Par conséquent, un commit parent est simplement le commit précédent d’un commit.
Regardez les commandes ci-dessous.
$ git show HEAD^ --oneline
L’exécution de la commande ci-dessus déplacera notre HEAD
au commit B
si nous sommes au commit A
.
$ git show HEAD^2 --oneline
Par contre, la commande ci-dessus va décaler notre HEAD
vers le commit E
.
Notez que HEAD^
et HEAD^1
ont le même objectif.
Il convient de noter que l’explication ci-dessus ne s’applique que lorsque nous avons fusionné des branches. Si vous travaillez avec une seule branche, alors HEAD^
sera l’équivalent de HEAD^
.
Git HEAD~
(Tilde)
Ajout d’un tilde aux points HEAD
au commit précédent du dernier commit de notre branche. C’est comme revenir en ligne droite.
Prenons un exemple.
Ainsi, si notre HEAD
est au commit A
, alors git HEAD~
ou git HEAD~1
nous déplacera vers le commit B
. HEAD~2
nous déplacera vers le commit C
.
Si nous sommes extraits au commit E
dans la autre branche
, HEAD~1
nous déplacera vers le commit F
et ainsi de suite.
Git HEAD{@}
Cette combinaison pointe vers la position de la référence à un instant donné dans notre référentiel local. Il apparaît généralement lors de l’exécution d’une commande git reflog
, comme indiqué ci-dessous.
En un mot, un signe d’insertion est utile lorsque nous fusionnons des branches sur d’autres branches et que nous devons passer à un commit dans une branche différente. Le tilde nous permet de passer à un commit précédent du dernier commit dans une branche spécifique.
Lorsque vous travaillez sur une seule branche, HEAD^
est identique à 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