2017-05-25 4 views
0

Ich habe die Befehle ausgeführtRevert git reset und drücken

git reset --hard 6eb7d13f32cf110a1122206e58df381c000a987e 
git push --force 

auf meinem GitHub-Repository. Das Problem ist, dass die vollständige SHA, die ich verwendete, falsch ist. Jetzt ist mein Repository-Status so alt. Also versuche ich, das Repository auf das letzte Commit zurückzusetzen, das ich vor der Ausführung dieser beiden Befehle gedrückt habe.

Der Ausgang eines git reflog ist

6eb7d13 [email protected]{0}: reset: moving to 6eb7d13f32cf110a1122206e58df381c000a987e 
4d0a0fd [email protected]{1}: pull: Fast-forward 
82859b3 [email protected]{2}: commit: including command to install dependencies 
e3c3ab8 [email protected]{3}: clone: from https://github.com/<user>/<repository>.git 

Die erste Ausgangsleitung den Fehler weist darauf hin, ich rückgängig machen möchten.

Ist es möglich, es rückgängig zu machen? Vielen Dank.

Antwort

0

Um in den Zustand zurückzukehren, in dem Sie gerade vor dem schlechten Reset waren und drücken, zurücksetzen und erneut drücken. Der Commit sollte immer noch da sein, unreferenzierte Commits bleiben typischerweise wochenlang hängen. Sieht so aus als wäre das 4d0a0fd.

git reset --hard 4d0a0fd 

Check everything is ok before pushing! 

git push --force 

Deshalb sollte man immer zögern bevor man drängt, vor allem ein Kraftstoß. Es gibt Ihnen einen Moment, um zu überprüfen, ob alles in Ordnung ist, bevor Sie einen Fehler teilen.

+0

Sie sind völlig im Recht zu zögern, bevor Sie diese Befehle verwenden. OK. Aber zu Ihrer Lösung habe ich nicht die vollständige SHA des letzten Commits. Ist dieser Code '4d0a0fd' genug? – tnas

+0

@tnas Ja, das nennt man eine "kurze ID" und 99,99% der Zeit ist alles, was Sie brauchen. Git benötigt nur genug ID, um sicherzustellen, dass es einzigartig ist. Siehe [Wie viel von einem Git * wird * im Allgemeinen * für notwendig erachtet, um eine Änderung in einer gegebenen Codebasis eindeutig zu identifizieren?] (Https://stackoverflow.com/questions/18134627/how-much-of-a-git-sha- wird im Allgemeinen als notwendig erachtet, um a) eindeutig zu identifizieren. Sie können die vollständige ID mit 'git reflog --no-abbread-commit' abrufen. 'git-reflog' ist meist ein Wrapper um' git log -g --abbrev-commit --pretty = oneline' und benötigt viele Argumente für die Anzeige der Commits. – Schwern

+1

Vielen Dank, so, so viel! Es hat perfekt funktioniert! – tnas