Frage Rückgängig git ziehen, wie man Repos zum alten Zustand holt


Gibt es eine Möglichkeit, den Git Pull zurückzusetzen oder rückgängig zu machen, so dass meine Quelle / Repos in den alten Zustand kommen, bevor sie Git Pull ausgeführt haben? Ich möchte dies tun, weil es einige Dateien zusammengeführt hat, die ich nicht wollte, aber nur andere verbleibende Dateien zusammenführen. Also, ich möchte diese Dateien zurückbekommen, ist das möglich? Vielen Dank :)

EDIT Ich möchte Git Merge zur Klärung rückgängig machen. Nachdem ich einige Antworten gesehen hatte, tat ich das

git reflog
bb3139b... HEAD@{0}: pull : Fast forward
01b34fa... HEAD@{1}: clone: from ...name...

Was soll ich jetzt tun? Tun git reset --hard  ist in Ordnung ? Ich will es nicht noch einmal vermasseln, also nach detaillierten Schritten fragen?


735
2017-08-03 16:42


Ursprung


Antworten:


git pull wird zwei Dinge tun: Es tut a git fetch und dann a git merge Hier werden Verzweigungen zusammengeführt, die in Ihrer Konfiguration zusammengeführt wurden.

Sie möchten also die Zusammenführung rückgängig machen (das Rückgängigmachen des Abrufs ist nicht sinnvoll und sollte nicht notwendig sein).

Um das zu tun, kannst du es versuchen git reset --hard um in einen vorherigen Zustand zurückzukehren. Benutze die Git-Reflog Befehl, um den SHA-1 des vorherigen Zustandes zu finden und dann auf diesen zurückzusetzen.

Warnung: git reset --hard Entfernt alle nicht festgeschriebenen Änderungen.


1022
2017-08-03 16:47



Genau wie jkps Antwort, aber hier ist der vollständige Befehl:

git reset --hard a0d3fe6

wo a0d3fe6 gefunden wird

git reflog

und schau dir den Punkt an, an dem du rückgängig machen willst.


227
2017-07-22 00:39



Eine modernere Methode zum Rückgängigmachen einer Zusammenführung ist:

git merge --abort

Und der etwas ältere Weg:

git reset --merge

Der alte Weg, der in früheren Antworten beschrieben wurde (Warnung: verwirft alle lokalen Änderungen):

git reset --hard

Aber eigentlich ist es das wert, dies zu bemerken git merge --abort ist nur gleichwertig git reset --merge das gegeben MERGE_HEAD ist anwesend. Dies kann in der Git-Hilfe für den Zusammenführungsbefehl gelesen werden.

git merge --abort is equivalent to git reset --merge when MERGE_HEAD is present.

Nach einer fehlgeschlagenen Zusammenführung, wenn es keine gibt MERGE_HEADkann die fehlgeschlagene Zusammenführung rückgängig gemacht werden git reset --merge aber nicht unbedingt mit git merge --abort, sie sind also nicht nur alte und neue Syntax für die gleiche Sache. Deshalb finde ich git reset --merge in der täglichen Arbeit viel nützlicher sein.


74
2018-05-20 09:17



Wenn Sie gitk haben (versuchen Sie "gitk --all von Ihrer git-Befehlszeile" auszuführen), ist es einfach. Führen Sie es einfach aus, wählen Sie das Commit, für das Sie ein Rollback durchführen möchten (klicken Sie mit der rechten Maustaste), und wählen Sie "Master-Zweig auf hier zurücksetzen". Wenn Sie keine Änderungen ohne Änderungen erhalten haben, wählen Sie die Option "hard".


35
2017-08-03 16:49



Es klappt erste Benutzung: git reflog

finde deine SHA deines vorherigen Zustandes und mache (HEAD @ {1} ist ein Beispiel)

git reset --hard HEAD@{1}

35
2018-03-08 17:00



Annehmen $COMMIT war die letzte Commit-ID vor der Ausführung git pull. Was Sie tun müssen, um den letzten Zug rückgängig zu machen, ist

git reset --hard $COMMIT

.

Bonus:

Wenn ich über Pull spreche, würde ich gerne einen interessanten Trick teilen,

git pull --rebase

Dieser obige Befehl ist der nützlichste Befehl in meinem Git-Leben, der eine Menge Zeit gespart hat.

Bevor Sie Ihren neuen Commit auf den Server übertragen, versuchen Sie diesen Befehl und er wird automatisch die neuesten Server-Änderungen synchronisieren (mit einem Fetch + Merge) und wird Ihr Commit im git log ganz oben platzieren. Sie müssen sich keine Sorgen über das manuelle Ziehen / Zusammenführen machen.

Details finden Sie unter: http://gitolite.com/git-pull-rebase


18
2017-12-23 15:55



du kannst tun git reset --hard ORIG_HEAD

seit "pull" oder "merge" setzen Sie ORIG_HEAD auf den aktuellen Zustand, bevor Sie diese Aktionen ausführen.


7
2017-08-19 16:52