Vous pouvez procéder comme suit :
git checkout --detach
git reset --soft master
git checkout master
Explication :
Si vous êtes sur le site debug
et ferait git reset --soft master
vous laisseriez votre arbre de travail et votre index intacts et passeriez au commit master
pointe vers. Le problème est le suivant, debug
sera également réinitialisé à ce commit. Ainsi, vos commits sur debug
sont "perdus" (enfin, pas vraiment, mais ils ne sont plus directement accessibles) et vous êtes toujours sur le site de la debug
branche.
Pour éviter git reset
de se déplacer debug
tout en continuant à définir votre HEAD
à la master
s'engager, vous devez d'abord faire git checkout --detach
pour pointer HEAD
directement à votre commit actuel (voir man git-checkout
, section "TÊTE DÉTACHÉE"). Vous pouvez alors procéder à la réinitialisation sans toucher à la debug
branche.
Maintenant HEAD
pointe directement sur le commit master
pointe vers, c'est-à-dire qu'il est encore détaché. Vous pouvez simplement git checkout master
à attacher à master
et sont maintenant prêts à s'engager sur le master
branche.
Il convient de noter que git checkout
(par défaut et lorsqu'aucun chemin n'est fourni) ne met à jour que les fichiers qui ont été modifiés entre la livraison "source" et la livraison "cible" et les modifications locales apportées aux fichiers de l'arborescence de travail sont conservées. Comme les deux livraisons sont identiques dans ce cas, aucun fichier du répertoire de travail n'est touché.