detached HEAD state — Comprendre cet etat Git
Ce n'est pas vraiment une erreur mais un avertissement qui deroute beaucoup de debutants. HEAD pointe vers un commit au lieu d'une branche. Voici ce que cela signifie et comment le gerer.
Ce que cet avertissement signifie
Dans Git, HEAD est un pointeur qui indique a Git sur quel commit vous travaillez actuellement. Normalement, HEAD pointe vers une branche (comme main), et la branche pointe vers un commit.
Lorsque vous etes en etat de HEAD detache, HEAD pointe directement vers un commit au lieu d'une branche. Vous pouvez toujours parcourir les fichiers, faire des modifications et creer des commits — mais ces commits n'appartiennent a aucune branche.
Le danger est que si vous changez de branche sans sauvegarder votre travail, ces commits orphelins peuvent finir par etre supprimes par le ramasse-miettes et etre perdus. La solution est simple : creez une branche avant de changer.
Pourquoi cela se produit
Checkout d'un commit specifique
Lancer git checkout a1b2c3d deplace HEAD directement vers ce commit. Puisque vous n'etes pas sur une branche, Git entre en etat de HEAD detache. C'est le declencheur le plus courant.
Checkout d'un tag
Les tags pointent vers un commit specifique, pas vers une branche. Lancer git checkout v1.0.0 vous met en HEAD detache tout comme le checkout d'un hash de commit. Pour travailler a partir d'un tag, creez immediatement une branche.
Pendant un rebase interactif
Lorsque vous lancez git rebase -i, Git rejoue vos commits un par un en etat de HEAD detache. C'est normal et temporaire — HEAD se rattache a votre branche une fois le rebase termine.
Comment corriger
Deux options : sauvegarder votre travail sur une nouvelle branche, ou revenir a une branche existante.
1. Sauvegarder sur une nouvelle branche
2. Revenir a une branche
3. Travailler depuis un tag
Comment prevenir cette situation
Utiliser git switch au lieu de git checkout
git switch est concu pour la navigation entre branches et refuse de detacher HEAD sauf si vous utilisez explicitement --detach. Cela previent les situations accidentelles de HEAD detache.
Creer une branche lors de l'inspection d'anciens commits
Au lieu de git checkout a1b2c3d, utilisez git switch -c inspecter-commit a1b2c3d. Cela vous donne une branche immediatement, donc tout commit que vous faites est en securite.
Savoir quand le HEAD detache est normal
Pendant git rebase -i ou git bisect, le HEAD detache est attendu. Pas de panique — laissez simplement l'operation se terminer ou annulez-la proprement si quelque chose ne va pas.
GitQuest est conçu par Anaïs (nouvelle fenêtre), développeuse web et responsable pédagogique, spécialisée en formations tech et accessibilité numérique.
Questions sur le detached HEAD state
Maitrisez les branches Git avec GitQuest
Pratiquez le branching, le merge et la navigation entre commits grace a des investigations interactives.
Commencer a apprendre Git