Il arrive parfois qu’après avoir travaillé sur une branche on la supprime accidentellement en revenant sur la branche principale en faisant :

1
2
git checkout develop
git branch -D maBranche

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

1
2
3
4
$ 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

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 :

1
git merge 8f2ba2b

où 8f2ba2b represente le sha1 du commit en question.

ou directement

1
git branch maBranche 8f2ba2b

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