A repository of bitesize articles, tips & tricks
(in both English and French) curated by Mirego’s team.

Comment récupérer un commit après un git push --force

En jouant au XBox avec mon gars d'une main et en pushant mode code de l'autre, j'ai fais un mauvais rebase sur ma branche en squashant mon premier commit au lieu de mon second. Après j'ai fais un second rebase sur master (triple facepalm) et j'ai perdu mon commit "1".

Reconstitution: git rebase -i master

squash 35aef17 Mon commit que j'ai perdu
pick 47udp8d Another commit to complete the task

Quoi ma branche est encore en conflit ? Ha ouais, j'ai encore des commits de master, ma rebaser sans interactif jpense que ça va faire! git rebase master

Il ne me restait plus que le second commit.

git reflog to the rescue!!! https://git-scm.com/docs/git-reflog

Grosso modo, ça permet d'avoir un historique sur chacun des moves git effectué localement.

Dans mon cas (still facepalming):

7056d91 HEAD@{17}: rebase -i (pick): Add DevicesHealthPresenter
617f7da HEAD@{18}: rebase -i (squash): Merge branch 'master' of github.com:mirego/hortau-platform-core
f579e10 HEAD@{19}: rebase -i (start): checkout master
4f22a9d HEAD@{20}: commit: Add DevicesHealthPresenter

J'ai donc pu effectuer: git checkout 4f22a9d et retrouver mon code perdu!

Je peux maintenant continuer de travailler sur mon projet!