26188 Stimmen

Wie kann ich die letzten lokalen Übertragungen in Git rückgängig machen?

Ich habe aus Versehen die falschen Dateien übertragen a Git aber den Commit noch nicht auf den Server gepusht.

Wie kann ich diese Übertragungen aus dem lokalen Repository rückgängig machen ?

Die einzige Möglichkeit scheint zu sein, die Änderungen in einen GUI-Texteditor zu kopieren, dann den gesamten lokalen Klon zu löschen, dann das Repository neu zu klonen und dann die Änderungen erneut anzuwenden. Allerdings,

  • Dies kann zu Datenverlusten führen.
  • Es ist sehr schwer, dies zu tun, wenn nur eine zufällige git commit ausgeführt wurde.

Gibt es einen besseren Weg?

2 Stimmen

Siehe diese Anleitung für das Rückgängigmachen von Git Commits auf Local, Public und Git Branch Wie man Git Commits wie ein Profi rückgängig macht

703 Stimmen

Weißt du, was Git braucht? git undo , das war's. Dann verschwindet der Ruf von Git, mit Fehlern von uns Normalsterblichen umzugehen. Implementieren Sie, indem Sie den aktuellen Zustand auf einen Git-Stack schieben, bevor Sie eine git Befehl. Es würde die Leistung beeinträchtigen, daher wäre es am besten, ein Konfigurations-Flag hinzuzufügen, das angibt, ob es aktiviert werden soll.

58 Stimmen

@YiminRong Das kann man mit Git's alias Funktion: git-scm.com/book/de/v2/Git-Basics-Git-Aliases

325voto

Manish Shrivastava Punkte 27921

Ein einziger Befehl:

git reset --soft 'HEAD^' 

Es funktioniert hervorragend, um die letzte lokale Übertragung rückgängig zu machen!

305voto

Alireza Punkte 92209

Setzen Sie ihn einfach mit dem folgenden Befehl zurück git :

git reset --soft HEAD~1

Erklären Sie das: was git reset tut, ist es im Grunde reset zu einem Commit, zu dem Sie zurückkehren möchten, und wenn Sie es mit --soft Taste wird zurückgesprungen, wobei die Änderungen in den Dateien beibehalten werden, so dass Sie zu dem Stadium zurückkehren, in dem die Datei gerade hinzugefügt wurde, HEAD ist der Kopf des Zweigs, und wenn Sie ihn mit ~1 (in diesem Fall verwenden Sie auch HEAD^ ), wird es nur eine Übergabe zurückgehen, was Sie wollen...

Ich habe die Schritte in der Abbildung unten für Sie ausführlicher dargestellt, einschließlich aller Schritte, die in realen Situationen vorkommen können, und der Übergabe des Codes:

How to undo the last commits in Git?

297voto

Ravi_Parmar Punkte 12239

"Den Arbeitsbaum auf die letzte Übertragung zurücksetzen"

git reset --hard HEAD^ 

"Unbekannte Dateien aus dem Arbeitsbaum entfernen"

git clean    

siehe. Git-Kurzreferenz

HINWEIS: Dieser Befehl löscht Ihre vorherige Übertragung also mit Vorsicht verwenden! git reset --hard ist sicherer.

278voto

Ranjithkumar Ravi Punkte 3202

Wie kann man die letzte Git-Übertragung rückgängig machen?

Um alles wieder so herzustellen, wie es vor dem letzten Commit war, müssen wir auf den Commit vor HEAD zurücksetzen.

  1. Wenn Sie die von Ihnen vorgenommenen Änderungen nicht beibehalten wollen:

    git reset --hard HEAD^
  2. Wenn Sie Ihre Änderungen beibehalten wollen:

    git reset --soft HEAD^

Prüfen Sie jetzt Ihr Git-Protokoll. Es wird zeigen, dass unser letzter Commit entfernt wurde.

228voto

Shubham Chaudhary Punkte 41926

Verwenden Sie reflog, um einen korrekten Zustand zu finden

git reflog

reflog before REFLOG VOR RESET

Wählen Sie das richtige Reflog (in meinem Fall f3cb6e2) und geben Sie

git reset --hard f3cb6e2

Danach wird das Repo HEAD auf diese HEADid zurückgesetzt reset effect PROTOKOLL NACH RESET

Schließlich sieht das Reflog wie das folgende Bild aus

reflog after REFLOG ENDGÜLTIG

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X