web-dev-qa-db-fra.com

A aborti de vieilles rebase et de commettre des engagements depuis que la Rebase a commencé

Merde! Il y a environ une semaine, je recâssais des commits en essayant de nettoyer mon référentiel, et je n'ai apparemment pas fini. Aujourd'hui, une semaine et plusieurs commettrons plus tard, je suis allé à Rebase pour réorganiser quelques engagements d'aujourd'hui, et cela m'a dit que j'étais déjà au milieu d'une Rebase.

Cela aurait dû être une mémoire de copier mon repo juste au cas où. Mais je n'ai pas ... au lieu de cela j'ai couru git rebase --abort qui a semblé juste à l'époque. Eh bien, ce n'était pas juste. Il a abandonné la Rebase il y a une semaine et réinitialiser le maître HEAD à l'ancienne. Mannequin!

J'ai plusieurs autres branches assez récentes et j'ai poussé à distance à plusieurs reprises, mais les changements les plus récents semblent être partis pour toujours. Je ne possède pas le niveau approprié de git-fu pour savoir s'il y a un moyen de récupérer mes modifications.

Suis-je fouillé?

ÉDITER - wow! Merci les gars! git reflog est génial! Je suis pleinement récupéré ... Leçon apprise. Marquage de la réponse de Tchalvak acceptée pour être le premier à poster.

67
Dan Breen

Vérifier git reflog. Vous pouvez revenir à temps à temps en utilisant ceux qui commettent des hachages comme référence dans presque tous les cas.

J'étais également physiquement copier physiquement le répertoire Git Repo ailleurs comme lieu de faire des tests préliminaires pour voir ce qui fonctionnera, de cette façon, vous pouvez jouer avec tout ce que vous voulez sans perdre de fichiers non traqués ou obtenir des choses dans un état que vous peut 't Revenez de.

101
Kzqai

Vous devriez être capable d'obtenir le SHA1 de vos plus récents commettants (qui ont disparu après la Rebase --Abort) avec un git reflog .

Vous pourrez ensuite réinitialiser votre branche 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 un git reset --hard HEAD~1 ".

Voir aussi le " Guide illustré de la récupération des engagements perdus avec git ", pour d'autres exemples de récupération.

65
VonC