Abandon de l’ancienne version de git et perte de commits depuis le début de la rebase

Merde! Il y a environ une semaine, je reformulais des commits en essayant de nettoyer mon repository, et apparemment je ne l’ai pas fini. Aujourd’hui, une semaine et plusieurs commits plus tard, je suis allé à rebase pour réordonner quelques commits d’aujourd’hui, et il m’a dit que j’étais déjà en plein rebase.

Cela aurait dû être un signal pour copier mon repo au cas où. Mais je n’ai pas … au lieu de cela j’ai lancé git rebase --abort qui sonnait bien à l’époque. Eh bien, ce n’était pas bien. Il a annulé la rebase il y a une semaine et réinitialisé HEAD du maître sur l’ancienne. Mannequin!

J’ai plusieurs autres twigs qui sont assez récentes et j’ai poussé à distance plusieurs fois, mais les changements les plus récents semblent avoir disparu pour toujours. Je ne possède pas le niveau approprié de git-fu pour savoir s’il existe un moyen de récupérer mes modifications.

Est-ce que je suis foutu?

EDIT – WOW! Merci les gars! git reflog est génial! Je suis complètement rétabli … leçon apprise. Marquage de la réponse de Tchalvak acceptée pour être le premier à poster.

Vérifiez git reflog . Vous pouvez revenir dans le temps en utilisant ces hachages de validation comme référence dans presque tous les cas.

Je copierais aussi physiquement le répertoire de repo git ailleurs comme endroit pour faire des tests préliminaires pour voir ce qui fonctionnera, de cette façon, vous pouvez gâcher ce que vous voulez sans perdre des fichiers non suivis ou mettre les choses dans un état impossible. de.

Vous devriez pouvoir obtenir le SHA1 de vos plus récents commits (qui ont disparu après la rebase –abort) avec un git reflog .

Vous pourrez alors réinitialiser votre twig actuelle à ces SHA1

 # Suppose the old commit was HEAD@{2} in the ref log git reset --hard HEAD@{2} 

C’est un peu comme ” Annuler une git reset --hard HEAD~1 “.

Voir aussi le ” guide illustré pour récupérer les commits perdus avec Git “, pour d’autres exemples de récupération.