lundi 4 mars 2019

Git : Ne fait jamais un checkout sur un commit!

Ne fait jamais un checkout sur un commit!

Quand on checkout un commit à la place d'une branche. cet argument va placer le répertoire de travail et la référence HEAD sur le commit spécifié, ce qui s’appelle dans ce cas une detached HEAD, car le HEAD n'est plus lié à la branche.



Utile aussi dans le cas d'un rebase, il crée un detached HEAD au moment de l'execution.

Cas particulier :

Au cas ou on veut revenir vers une version antérieur pour corriger un bug, pour voir comment les choses marchés avant, dans ce cas là on ne doit pas avoir de detached HEAD, qui s'affiche, ce n'est pas à nous de gérer cela.

La solution est de créer une branche temporaire à partir du commit qui nous intéresse :

Dans Eclipse :

Créer une branche :


Puis faire un checkout :


Avec la console git bash:

git checkout -b test-branch e6a4efcx8

Pour plus d'informations sur le fonctionnement du HEAD :

https://stackoverflow.com/questions/34519665/how-to-move-head-back-to-a-previous-location-detached-head-undo-commits