À propos de l’extraction d’un commit
L’extraction d’un commit vous permet d’afficher votre référentiel dans un état précédent sans avoir à créer une branche ou à modifier une branche existante. Cela peut être utile lors du débogage, car il vous permet de constater l’existence d’un bogue dans votre référentiel lors d’un précédent commit.
L’extraction d’un commit place votre dépôt dans un état « HEAD détaché ». Dans la terminologie Git , « HEAD » est la référence qui pointe vers les informations, ou le dernier commit, d’une branche nommée dans votre référentiel. Un état « HEAD détaché » signifie que HEAD fait référence à un commit spécifique, mais pas sur une branche nommée dans votre référentiel.
Remarque : les commits effectués dans un état « HEAD détaché » sont perdus lors du basculement entre des branches, car ces commit n’ont pas été effectués sur une branche nommée. Si vous avez besoin de récupérer les commit perdus, consultez « Dépannage ».
Extraction d’un commit
-
Dans la barre latérale gauche, cliquez sur Histoire.
-
Cliquez avec le bouton droit sur le commit que vous souhaitez extraire, puis sélectionnez Extraction d’un commit.
-
L’élément Branche actuelle dans la barre de référentiel affiche désormais « HEAD détaché », ainsi que la SHA du commit extrait.
-
Pour quitter l’état « HEAD détaché », vous devez basculer entre des branches. Pour plus d’informations, consultez « Gestion des branches dans GitHub Desktop ».
Dépannage
Vous pouvez récupérer des commits qui ont été effectués dans un état « HEAD détaché » à l’aide de la commande git reflog
à partir de la ligne de commande Git. Vous pouvez ouvrir votre référentiel dans la ligne de commande à partir de GitHub Desktop en accédant à la barre de menus, en sélectionnant Référentiel, puis en cliquant sur Ouvrir dans la ligne de commande.
La commande git reflog
affiche la production des événements qui se ont eu lieu dans votre référentiel, y compris les commits. Voici un exemple de production de la commande git reflog
:
81fa9136f8 (HEAD -> main) HEAD@{0}: checkout: moving from 8bd5e736a27a52a7e36a856b30e6f0582d341aa1 to main
8bd5e736a2 HEAD@{1}: commit: testing out a feature
22fa76c125 HEAD@{2}: checkout: moving from main to 22fa76c1250a2847305b9325752d941dbaa55983
La ligne 8bd5e736a2 HEAD@{1}: commit: testing out a feature
est le commit que nous voulons récupérer, car il a été effectué pendant que le référentiel était dans un état « HEAD détaché ». Pour le récupérer, vous pouvez exécuter git cherry-pick 8bd5e736a2
afin d’appliquer le commit à la branche actuelle dans votre référentiel.
Pour aller plus loin
- HEAD détaché dans la documentation Git
- Cherry-pick Git dans la documentation Git