Ich habe ein gemacht, git commit
aber ich habe es noch nicht in das Repository verschoben. Wenn ich das tue git status
, erhalte ich '# Ihr Zweig ist um 1 Commit vor' Master '.
Wenn ich also mein Top-Commit zurücksetzen möchte, kann ich einfach Folgendes tun:
git reset --hard eb27bf26dd18c5a34e0e82b929e0d74cfcaab316
wenn ich das git log
bekomme, bekomme ich:
Commit eb27bf26dd18c5a34e0e82b929e0d74cfcaab316 Datum: Di 29.09. 11:21:41 2009 -0700 Commit db0c078d5286b837532ff5e276dcf91885df2296 Datum: Di 22.09. 10:31:37 2009 -0700
reset --hard
Kann zu Arbeitsverlust führen, da dies dazu führt, dass Git Ihre lokalen Dateien (Ihre neue Arbeit) mit denen aus dem Web überschreibt (mir passiert). Fragen und Antworten zu git sollten explizit angeben, was ihre Befehle tun und welche Risiken für die Leser bestehen.Antworten:
Eigentlich , wenn Sie verwenden
git reset
, sollten Sie sich auf die verpflichten , dass Sie das Zurücksetzen auf ; Sie würden alsodb0c078
wahrscheinlich das Commit wollen .Eine einfachere Version wäre
git reset --hard HEAD^
, vor dem aktuellen Kopf auf das vorherige Commit zurückzusetzen. Auf diese Weise müssen Sie keine Commit-IDs kopieren.Passen Sie auf
git reset --hard
, wenn Sie etwas tun , da Sie alle nicht festgeschriebenen Änderungen verlieren können, die Sie haben. Möglicherweise möchten Sie überprüfengit status
, ob Ihre Arbeitskopie sauber ist oder ob vorhandene Änderungen weggeblasen werden sollen.Zusätzlich können Sie anstelle von HEAD
origin/master
als Referenz verwenden, wie von @bdonlan in den Kommentaren vorgeschlagen:git reset --hard origin/master
quelle
git reset --hard origin/master
um es auf den Ursprung zurückzusetzen.git reset
Ihren Code. Machen Sie Ihre Zukunft selbst einen Gefallen: Der Unterschied zwischenreset
,reset --soft
undreset --hard
(Was ist mit Ihrer früheren geschiehtgit add
auch bekannt als „Arbeit“ :) Bild: Linkgit status
zeigt also keine Änderungen an und das Commit wird entfernt / Änderungen gehen verloren).git reset --hard HEAD^
da Sie Änderungen in den festgeschriebenen Dateien verlieren (Ihre Änderungen werden gelöscht). Es gibt zwei Zweige zu dieser Frage: Um ein Commit zurückzusetzen, aber noch Änderungen auf der Festplatte zu haben, tun Sie diesgit reset --soft HEAD~1
WENN Sie Ihre Änderungen NICHT auf Remote übertragen haben
Überprüfen Sie, ob die Arbeitskopie von sauber ist
git status
.SONST haben Sie Ihre Änderungen auf Remote übertragen
Dieser Befehl wird das letzte Festschreiben / Ändern zurücksetzen / entfernen und dann können Sie drücken
quelle
um es auf den Ursprung zurückzusetzen.
Dies wurde von @bdonlan in den Kommentaren gepostet . Ich habe diese Antwort für Leute hinzugefügt, die keine Kommentare lesen.
quelle
master
- sollte ich ihnorigin/mybranch
dann verwenden?git reset HEAD~
dass nur das Festschreiben in Code zurückgesetzt wirdDiese Frage besteht aus zwei Zweigen (das Zurücksetzen eines Commits bedeutet nicht, dass ich alle meine lokalen Änderungen verlieren möchte):
1. Um das letzte Festschreiben zurückzusetzen und Änderungen in der festgeschriebenen Datei zu verwerfen , gehen Sie wie folgt vor :
git reset --hard HEAD~1
2. Um das letzte Commit zurückzusetzen, aber die lokalen Änderungen (auf der Festplatte) beizubehalten , gehen Sie wie folgt vor :
git reset --soft HEAD~1
Dies (der spätere Befehl) bringt Sie in den Zustand, in dem Sie gewesen wären, wenn Sie dies getan hätten
git add
.Wenn Sie die Dateien danach entfernen möchten, tun Sie dies
git reset
Jetzt können Sie weitere Änderungen vornehmen, bevor Sie sie hinzufügen und dann erneut festschreiben.
quelle
Geben Sie einfach die Konsole ein:
Dieser Befehl verwirft alle lokalen Commits vor dem Remote-HEAD
quelle
Ich glaube, dass einer davon Ihren Bedürfnissen entspricht
1 - Machen Sie das Festschreiben rückgängig und lassen Sie alle Dateien bereit:
git reset --soft HEAD~;
2 - Commit rückgängig machen und alle Dateien entfernen:
git reset HEAD~;
3 - Machen Sie das Commit rückgängig und entfernen Sie alle Änderungen vollständig:
git reset --hard HEAD~;
Hier habe ich die Antwort gefunden
quelle
Entfernen Sie das letzte Commit vor dem Push
git reset --soft HEAD~1
1
bedeutet das letzte Festschreiben, wenn Sie zwei letzte Verwendungen entfernen möchten2
, und so weiter *quelle
--soft
ist eine großartige Ergänzung zu den möglichen Antworten, aber kannst du auch erwähnen, warum? Es ist immer hilfreich, Ihre Lösung zu erklären. Versuchen Sie auch, bei Englisch zu bleiben. Vielen Dank--soft
- stellt sicher, dass Sie keine Änderungen in der Datei verlieren, deren Commit Sie rückgängig machenIch habe die gleiche Situation wie unten erlebt, da dies viel einfacher ist. Durch Übergeben können
commit-Id
Sie zu dem bestimmten Commit gelangen, zu dem Sie gehen möchten:Wenn Sie Ihr letztes Commit entfernen möchten, müssen Sie die Stelle übergeben, an der
commit-Id
Sie Ihren Zeiger bewegen müssen:quelle
Das ist was ich mache:
Überprüfen Sie zuerst Ihre Filiale (für meine
master
Fallfiliale):Setzen Sie dann auf Remote-HEAD ^ zurück ( alle lokalen Änderungen werden entfernt ), erzwingen Sie die Reinigung und ziehen Sie:
quelle
Eine Möglichkeit besteht darin, den lokalen Zweig zu löschen und diesen Zweig vom Server auszuchecken, wenn Ihr lokaler Zweig durch mehrere Commits vor dem Remote-Zweig liegt und Sie alle nicht mehr festschreiben müssen.
quelle
Ich hatte nur das gleiche Problem und tat am Ende:
(N ist die Anzahl der Commits, die Git Ihnen zeigt)
Dadurch wird Ihr Texteditor aufgefordert, und Sie können das gewünschte Commit entfernen, indem Sie die damit verbundene Zeile löschen.
quelle