2014-01-14 4 views
22

Ich habe eine git reset HEAD~1, um einen Commit zurückzugehen. Ich habe das mehrere Male gemacht.Git: Move Kopf ein Commit voraus

Ich möchte jetzt zurück gehen, wo HEAD war ursprünglich, aber bin mir nicht sicher, wie ich meine HEAD nach vorne verschieben.

Weiß jemand, welchen Befehl ich verwenden muss?

1-2-3-4-5-6

Ursprünglich war ich bei 6 und ich zurückgesetzt zurück zu 3. ich jetzt wieder auf 5. Mein Verständnis gehen wollen, ist, dass, da ich nicht git reset --hard zu tun haben Meine Originaldateien von Commit 6 sind noch verfügbar. Theoretisch sollte ich in der Lage sein, das Zurücksetzen und das Zurücksetzen korrekt durchzuführen?

+0

Wenn es das letzte Commit in einem Zweig ist (z. B. "Master"), können Sie einfach 'git checkout master' verwenden. Wenn dies nicht der Fall ist, können Sie die spezifische SHA1 auschecken oder die Spitze der Zweigstelle auschecken und rückwärts arbeiten. Es gibt wahrscheinlich auch andere Möglichkeiten. –

+0

Wenn Sie keinen Hard-Reset durchgeführt haben, werden Ihre Änderungen nicht verworfen. Die Commits selbst wurden jedoch aus dem Index entfernt. Die Änderungen befinden sich nur in den Dateien in Ihrem Arbeitsverzeichnis. Mit 'git reflog' können Sie das beheben. –

Antwort

33

Verwenden Sie git reflog SHA-1 der letzten Operationen und dann tun Sie git reset --hard <sha1>.

Git hält Objekte (und ihre SHA-1) auch, sie gehen "außerhalb des Geltungsbereichs" bis zum nächsten Aufruf git gc. Wenn Sie also denken, dass Sie etwas in der Projekthistorie verloren haben, verwenden Sie git reflog, um zu sehen, ob diese SMS vorhanden ist.

+1

Genauer gesagt, behält sie sie bei, bis der Reflog-Eintrag abläuft * und * ein 'git gc' auftritt (' gc' wird automatisch bei Bedarf aufgerufen). Der Reflog ist der einfache Weg, um sie zu finden, so dass "Reflog-Ablauf" der sicherere Weg ist, darüber nachzudenken, wie lange die Dinge wiederherstellbar sind. Standardmäßig ist das Ablaufdatum mindestens 30 Tage und bei einigen Einträgen 90 Tage (die Details gehen über den Rahmen dieses Kommentars hinaus :-)). – torek

+0

Dies war sehr informativ und ermöglichte mir, mein Problem zu lösen. Danke user3159253 – SeekingAlpha

+0

Ich erhalte 'kann Verzeichnis bei nicht schaffen .... Erlaubnis verweigert' – ahnbizcad