Git le sauveur... enfin si on sait utiliser le retour en arrière

Scénario 1 : suppression mal à droite de branche

Vous vous êtes lancés à fond dans vos développements sur une branche local pour être isolé du reste des changements de votre équipe. Bref, vous avez suivi la bonne pratique au pied de la lettre tout va bien et l'honneur est sauf. Toutefois, une correction est à faire dans l'urgence. Vous vous dites, pas de soucis: je switche et reprend la branche master, je fais une branche de hotfix et fais les corrections, Gestion de la non régression, etc. ,stress de la mise en production. Mais ça va, tout se passe bien.

Puis vous revenez sur votre sujet initiale, toutefois en parralléle il y a eu une fin de sprint et avez fait un pull request d'ancien développement d'une branche et vous ne savez plus la branche à supprimer / garder... et là c'est le drame vous vous trompez!!! La branche local qui n'a pas été pushé à distance avec tous vos derniers travaux dessus se retrouve supprimer. Là, 😱 gros moment de panique, comment retrouver ce qui a été supprimé alors que plus rien n'apparaît dans l'historique... et éviter de refaire le travail de 3/4 jours en mode rush.

Et bien en fait, il y a un autre historique qui permet de retrouver toutes les traces. Et c'est ce qui va nous sauver la vie. Pour cela, il faut utiliser la fonctionnalité reflog. Elle s'utilise avec le paramétre reflog :

git reflog --no-abbrev

c'est bien, mais vous vous dites ce n'est pas très confortable à l'usage. Toutefois, si vous avez installé l'outil graphique avec par exemple git for windows, alors vous pourrez plutôt utiliser cette commande :

gitk --reflog

Ainsi vous obtiendrez une fenêtre de ce type qui permettra de récupérer facilement le dernier commit sur la branche qui n'est plus visible dans l'historique:

Cela m'a permis de me remettre d'une crise cardiaque :D (j'en fais peut-être un peu trop là).  Pour les autres commandes, je les trouve trop "classique" (revert, etc.) de ce fait je ne vais pas paraphraser les sites existant et surtout mettre en avant des commandes qui ne sont pas utilisées très souvent. Je compte ainsi mettre à jour ce billet lorsque je suis confronté à utiliser ce type d'opération avancée afin de les retrouver plus tard, ou que ces opérations puissent dépanner certains d'entre vous. De même, si vous estimez que certaines commandes mérite d'être mieux documenter n'hésitez pas à me le faire savoir dans les commentaires. Cela me permettra de les ajouter par la suite sur ce billet.


Rejoindre la conversation