Git HEAD^ contre Git HEAD~ contre Git HEAD{@}

John Wachira 15 février 2024
  1. Git HEAD^ (Caret)
  2. Git HEAD~ (Tilde)
  3. Git HEAD{@}
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.

git HEAD ^

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.

git HEAD ~

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.

commande git reflog

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^.

Auteur: John Wachira
John Wachira avatar John Wachira avatar

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

Article connexe - Git Head