Schritte, die ich ausgeführt habe:
Ich habe zwei Zweige branch1 und branch2,
$git branch --Initial state
$branch1
$git checkout branch2
$git pull origin branch1 --Step1
Ich habe die Konflikte gelöst und a
$git commit -m "Merge resolved"
dann
$git checkout branch1
$git merge branch2
$git push origin branch1
Jetzt wurde mir klar, dass bei Schritt 1 durch das automatische Zusammenführen Code entfernt und der Änderungscode verschoben wurde. Jetzt möchte ich zu meinem Ausgangszustand zurückkehren, um alle Änderungen rückgängig zu machen. Suchen Sie nach sofortiger Hilfe?
git
git-revert
Bijendra
quelle
quelle
Antworten:
Sie können die Zusammenführung gemäß der offiziellen Anleitung zurücksetzen. Dies lässt Git jedoch fälschlicherweise glauben, dass sich die zusammengeführten Commits noch im Zielzweig befinden.
Grundsätzlich muss man:
quelle
1
. Dies bedeutet, dass dasfirst
übergeordnete Element der Zusammenführung festgeschrieben wird. Wenn man jedoch (hypothetisch) "versehentlich" den Master mit dem Zweig zusammenführt, dann spult man den Master schnell zum zusammengeführten Commit vor - sollte man verwenden-m 2
, um die Zusammenführung auf dem Master zurückzusetzen.1
. Es hat mein Repository durcheinander gebracht, indem die Zusammenführung teilweise zurückgesetzt wurde, während ich die Zusammenführung vollständig zurücksetzen wollte. Am Ende habe ich den Revert zurückgesetzt!Versuchen Sie
git reflog <branch>
, herauszufinden, wo sich Ihr Zweig vor dem Zusammenführen befand, undgit reset --hard <commit number>
die alte Revision wiederherzustellen.Reflog zeigt Ihnen ältere Zustände des Zweigs an, sodass Sie ihn auf einen beliebigen Änderungssatz zurücksetzen können.
Stellen Sie sicher, dass Sie sich in der richtigen Verzweigung befinden, wenn Sie git reset verwenden
Sie können dies tun
git push -f
, um den Verlauf des Remote-Repositorys zu ändern. Dies wird jedoch nicht empfohlen, da bereits jemand von Ihnen gepuschte Änderungen heruntergeladen haben kann.quelle
Die erste Option ist die Verwendung von
git revert
.Das
git revert
wird die Änderungen zurücksetzen, aber den Verlauf beibehalten. Daher können Sie nicht mehr in demselben Zweig weiterarbeiten, da Sie den tatsächlichen Unterschied zwischen dem zusammengeführten Zweig und Ihrem Feature-Zweig nicht mehr sehen können. Verwenden Sie die folgende Methode, um auch den Verlauf zu entfernen. Tun Sie dies sehr vorsichtig, wenn und nur wenn Sie der einzige sind, der im Moment Änderungen am Zweig vorantreibt.quelle
In meinem Fall habe ich meinen Zweig (z. B. meinen Zweig) mit einem anderen Feature-Zweig (Feature-Zweig) zusammengeführt, aber nicht mit dem Master. Meine Branchengeschichte war also so:
Nach dem Zusammenführen mit einem anderen,
feature-branch
der Commitsf1, f2
über dem Master hatte, wurde es so:Dies ist möglicherweise passiert, weil ich während der Arbeit an meinem Zweig nach zwei Festschreibungen eine Zusammenführung vom Master durchgeführt habe oder einer von zwei Zweigen möglicherweise nicht mit dem Master auf dem neuesten Stand war. In diesem Fall
git revert -m 1
funktionierte es also nicht, da es diese verließf1
undf2
dazwischen festschrieb.Die Lösung war einfach und funktioniert in normalen Szenarien, in denen wir keine Zwischen-Commits haben:
Verwenden Sie anstelle von 6 die entsprechende Nummer, basierend auf der Anzahl der Commits in der Vergangenheit, die Sie ändern möchten. Jetzt wird der Vim-Editor geöffnet. Markieren Sie einfach unerwünschte Commits als
drop
gleich und beenden Sie das:wq
Programm mit dem Überprüfungsprotokoll:Kraft drücken
Jetzt sollte sich der Remote-Zweig im vorherigen Status befinden.
quelle