Frage Git Reset rückgängig machen?


Was ist der einfachste Weg, um das rückgängig zu machen

git reset HEAD~

Befehl? Momentan kann ich nur daran denken, einen "git clone http: // ..." von einem entfernten Repo zu machen.


892
2018-03-24 18:08


Ursprung


Antworten:


Kurze Antwort:

git reset 'HEAD@{1}'

Lange Antwort:

Git protokolliert alle ref-Aktualisierungen (z. B. checkout, reset, commit, merge). Sie können es anzeigen, indem Sie Folgendes eingeben:

git reflog

Irgendwo in dieser Liste ist das Commit, das du verloren hast. Sagen wir, du hast gerade getippt git reset HEAD~ und will es rückgängig machen. Mein Reflog sieht so aus:

$ git reflog
3f6db14 HEAD@{0}: HEAD~: updating HEAD
d27924e HEAD@{1}: checkout: moving from d27924e0fe16776f0d0f1ee2933a0334a4787b4c
[...]

Die erste Zeile sagt das HEAD Vor 0 Positionen (mit anderen Worten, die aktuelle Position) ist 3f6db14; es wurde durch Zurücksetzen auf erhalten HEAD~. Die zweite Zeile sagt das HEAD Vor 1 Position (mit anderen Worten, der Zustand vor dem Reset) ist d27924e. Es wurde durch Auschecken eines bestimmten Commits erhalten (obwohl das momentan nicht wichtig ist). Um den Reset rückgängig zu machen, führen Sie ihn aus git reset HEAD@{1} (oder git reset d27924e).

Wenn Sie auf der anderen Seite seit der Aktualisierung von HEAD einige andere Befehle ausgeführt haben, steht die gewünschte Festschreibung nicht an der Spitze der Liste, und Sie müssen die reflog.

Eine letzte Anmerkung: Es mag einfacher sein, auf die reflog Für den bestimmten Zweig, den Sie zurücksetzen möchten, sagen Sie Master statt HEAD:

$ git reflog show master
c24138b master@{0}: merge origin/master: Fast-forward
90a2bf9 master@{1}: merge origin/master: Fast-forward
[...]

Dies sollte weniger Lärm als das allgemeine haben HEAD reflog.


1682
2018-03-28 03:32



Alte Frage und die geposteten Antworten funktionieren großartig. Ich werde jedoch mit einer anderen Option spielen.

git reset ORIG_HEAD

ORIG_HEAD verweist auf das Commit, das HEAD zuvor referenziert.


89
2018-01-25 14:10



Meine Situation war etwas anders git reset HEAD~ drei Mal.

Um es rückgängig zu machen, musste ich tun

git reset HEAD@{3}

also sollte es dir möglich sein

git reset HEAD@{N}

Aber wenn Sie git zurückgesetzt haben mit

git reset HEAD~3

Du wirst es tun müssen

git reset HEAD@{1}

Als {N} steht die Anzahl der Operationen in Reflog. Wie Mark in den Kommentaren darauf hingewiesen hat.


28
2017-08-15 08:38



1. Verwenden git reflog um alle Referenzen zu aktualisieren.

2.git reset <id_of_commit_to_which_you_want_restore>

3 Nächstes Mal vermeiden Sie dies


0
2017-07-05 15:15