Il arrive parfois qu’après avoir travaillé sur une branche on la supprime accidentellement en revenant sur la branche principale en faisant :
[cce lang= »bash » tab_size= »2″ escaped= »true »]
git checkout develop
git branch -D maBranche
[/cce]

Si on fait ça avant d’avoir mergé la branche (ça arrive), ça devient assez critique 🙁
Heureusement, git a une solution magique(ou presque) pour nous aider à récupérer cette branche.

Git enregistre toutes les modifications de votre dépôt dans un fichier de logs auquel vous pouvez accéder via la commande :

git reflog
[cce lang= »bash » tab_size= »2″ escaped= »true »]
$ git reflog
8842905 HEAD@{0}: checkout: moving from maBranche to develop
8f2ba2b HEAD@{1}: commit: [IMP] modification sur ma branche
8842905 HEAD@{2}: checkout: moving from develop to maBranche
[/cce]

la commande affiche les dernière modifications faites sur votre dépôt avec les informations suivantes :
– le sha1 de la modification qui l’identifie de manière unique
– la position de la modification dans les logs
– la description de la modification (checkout, commit…)

Ici, la modification qui nous intéresse est celle où l’on a fait le commit. On peut la récupérer en faisant :

– Recreer la branche maBranche
– lancer la commande : [cce lang= »bash » tab_size= »2″ escaped= »true »]git merge 8f2ba2b[/cce]
où 8f2ba2b represente le sha1 du commit en question.

ou directement [cce lang= »bash » tab_size= »2″ escaped= »true »]git branch maBranche 8f2ba2b[/cce]

Voilà, vous pouvez la merger à présent.