Ancien rebase git avorté et la perte de commits depuis le début du rebase

Merde! Il y a environ une semaine, j'ai rebaptisé quelques commits en essayant de nettoyer mon dépôt, et apparemment Je ne l'ai pas fini. Aujourd'hui, une semaine plus tard, je me suis rendu à rebase pour réorganiser quelques commits d'aujourd'hui, et il m'a dit que j'étais déjà au milieu d'un rebase.

ça aurait dû être un signal pour copier ma déclaration juste au cas où. Mais je n'ai pas...au lieu de cela, j'ai couru git rebase --abort qui sonnait juste à l'époque. Eh bien, ce n'est pas juste. Il il a abandonné le rebase d'il y a une semaine et réinitialisé la tête du maître à l'ancienne. Mannequin!

j'ai plusieurs autres branches qui sont assez récentes, et j'ai poussé à distance plusieurs fois, 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 changements.

est-ce que je suis foutu?

EDIT - WOW! Merci les gars! git reflog est génial! Je suis entièrement récupéré...leçon apprise. Correction de la réponse de Tchalvak acceptée pour être le premier à poster.

55
demandé sur Dan Breen 2010-04-22 23:02:48

2 réponses

Vérifier git reflog . Vous pouvez remonter dans le temps en utilisant ces hachages de propagation comme référence dans presque tous les cas.

Je copierais aussi physiquement le répertoire repo de git ailleurs comme un endroit pour faire des tests préliminaires pour voir ce qui va marcher, de cette façon vous pouvez jouer avec tout ce que vous voulez sans perdre des fichiers non trackés ou obtenir des choses dans un État que vous ne peut pas revenir.

85
répondu Kzqai 2014-03-31 16:20:34

vous devriez être en mesure d'obtenir le SHA1 de vos plus récentes commits (qui ont disparu après le rebase --abort) avec un git reflog .

vous serez alors en mesure de réinitialiser votre branche actuelle à ceux SHA1

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

C'est un peu comme " l'Annulation d'un git reset --hard HEAD~1 ".

Voir Aussi Le" guide illustré pour récupérer les charges perdues avec Git ", pour d'autres exemples de récupération.

59
répondu VonC 2017-05-23 11:46:53