it-swarm.com.de

Rückgängig machen, wie man Repos in den alten Zustand bringt

Gibt es eine Möglichkeit, git pull rückgängig zu machen oder rückgängig zu machen, so dass meine Quell-/Repos zu einem alten Zustand werden, der vor dem Ausführen von git pull ausgeführt wurde? , aber nur andere verbleibende Dateien zusammenführen. Also möchte ich diese Dateien zurückholen, ist das möglich? Danke :)

BEARBEITEN Ich möchte das Zusammenführen von Git zum Zwecke der Klarstellung rückgängig machen. Nach ein paar Antworten habe ich dies getan 

git reflog
bb3139b... [email protected]{0}: pull : Fast forward
01b34fa... [email protected]{1}: clone: from ...name...

Was soll ich jetzt tun? git reset --hard ist in Ordnung? Ich möchte es nicht noch einmal schrauben, also nach detaillierten Schritten fragen? 

807

git pull führt zwei Dinge aus: Es führt einen git fetch und dann einen git merge aus, in dem die Zweige zusammengeführt werden, die in Ihrer Konfiguration zum Zusammenführen eingerichtet wurden.

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

Um dies zu tun, können Sie versuchen, mit git reset --hard auf einen früheren Zustand zurückzusetzen. Verwenden Sie den Befehl git-reflog , um den SHA-1 des vorherigen Zustands zu suchen, und setzen Sie ihn anschließend zurück.

Warning: git reset --hard entfernt alle nicht festgeschriebenen Änderungen. 

1128
jkp

Entspricht der Antwort von jkp, aber hier ist der vollständige Befehl:

git reset --hard a0d3fe6

wo a0d3fe6 gefunden wird

git reflog

und auf den Punkt schauen, an dem Sie rückgängig machen möchten. 

260
Jeffrey Sun

Eine modernere Methode, eine Verschmelzung rückgängig zu machen, ist:

git merge --abort

Und der etwas ältere Weg:

git reset --merge

Der alte Schulweg, der in vorherigen Antworten beschrieben wurde (Warnung: Alle lokalen Änderungen werden verworfen):

git reset --hard

Tatsächlich lohnt es sich jedoch zu beachten, dass git merge --abort nur äquivalent zu git reset --merge ist, wenn MERGE_HEAD vorhanden ist. Dies kann in der git-Hilfe zum Zusammenführungsbefehl gelesen werden.

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

Nach einer fehlgeschlagenen Zusammenführung, wenn kein MERGE_HEAD vorhanden ist, kann die fehlgeschlagene Zusammenführung mit git reset --merge rückgängig gemacht werden, jedoch nicht unbedingt mit git merge --abort,, so dass sie nicht nur alte und neue Syntax für dieselbe Sache sind Deshalb finde ich git reset --merge viel nützlicher im Arbeitsalltag.

89
Martin G

es funktioniert erstmalige Verwendung: git reflog

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

git reset --hard [email protected]{1}
46

Wenn Sie gitk haben (versuchen Sie "gitk --all von Ihrer git-Befehlszeile" aus auszuführen), ist es einfach. Führen Sie es einfach aus, wählen Sie das Commit aus, zu dem Sie einen Rollback ausführen möchten (klicken Sie mit der rechten Maustaste), und wählen Sie "Master-Zweig zurücksetzen". Wenn Sie keine nicht festgeschriebenen Änderungen vorgenommen haben, wählen Sie die Option "hart".

37
Samuel Carrijo

Angenommen, $COMMIT war die letzte Commit-ID, bevor Sie git pull..__ ausgeführt haben. Was Sie zum Rückgängigmachen des letzten Pull tun müssen, ist

git reset --hard $COMMIT

.

Bonus:

In Bezug auf Pull möchte ich einen interessanten Trick teilen,

git pull --rebase

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

Bevor Sie Ihr neues Commit an den Server senden, probieren Sie diesen Befehl aus, um die neuesten Serveränderungen (mit Abruf + Zusammenführen) automatisch zu synchronisieren und Ihr Commit ganz oben in git log zu setzen. Sie müssen sich keine Gedanken über manuelles Ziehen/Zusammenführen machen.

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

24

sie können git reset --hard ORIG_HEAD

da "Pull" oder "Merge" ORIG_HEAD als aktuellen Status festlegen, bevor diese Aktionen ausgeführt werden.

10
Orlando

Dies ist der einfachste Weg, um Änderungen rückgängig zu machen.

git reset --hard 9573e3e0

Wo 9573e3e0 ist Ihre {Commit-ID}

5
Manish Goswami

Wenn eine Zusammenführung fehlgeschlagen ist, was der häufigste Grund ist, einen git pull rückgängig zu machen, führt git reset --merge genau das aus, was man erwarten würde: Behalten Sie die abgerufenen Dateien bei, und machen Sie die Zusammenführung rückgängig, die git pull versucht hat, zusammenzuführen. Dann kann man entscheiden, was man ohne das Durcheinander macht, das git merge manchmal erzeugt. Und es ist nicht nötig, die genaue Commit-ID zu finden, die --hard in jeder anderen Antwort benötigt.

0
Davide