2017-02-21 2 views
0

Ok entfernt,Git Undo merge, die unbestätigten Änderungen

so der gesamte Punkt der Quellcodeverwaltung ist es, Veränderungen so Chaos ups und Deletionen oder schlechte Funktion Pfade verfolgen behoben werden kann - jedoch können wir dies tun müssen.

Git ist super dafür. Aber in letzter Zeit ist mir etwas passiert.

Ich habe Master, Entwicklung und Phase3 Zweige. Master und Entwicklung sind abgelegene Zweigstellen, in denen Phase3 lokal war. Develop wurde vor kurzem zu einer Release-Zweigstelle zum Testen verzweigt. Dieser Zweig wurde später wieder zu Master zusammengeführt, als unsere Veröffentlichung in Produktion ging.
Ich sitze hier realisierte, dass ich Master zurück in Entwicklung integrieren muss, um die Commit-Geschichte beizubehalten, und darauf hingewiesen, dass Phase3 wahrscheinlich auch die neueste Zweigstelle zusammengeführt haben sollte.
Dies ist, wo alles nach Süden ging. Ich bin gegangen, um Master in Phase3 zu integrieren, und es hat ALLE meine aktuellen Änderungen zerstört.
Es wurde nicht nach einer Zusammenführungsanforderung gefragt. Es wurde nicht einmal gesagt: "Vielleicht möchten Sie Ihre Änderungen an aktuellen Dokumenten festschreiben oder speichern". Es hat sie nur überschrieben !!!!

Ich meine, ich kann nicht einmal alternative Zweige eines Repositorys auschecken, ohne dass Git mich vor einem möglichen Datenverlust warnt, aber eine Zusammenführung kann diese Änderungen nur mit einem kleinen Hinweis überschreiben? WTF?

A) Gibt es eine Möglichkeit, dem Repository mitzuteilen, dass dies rückgängig gemacht werden soll? (unwahrscheinlich) B) Gibt es eine Möglichkeit, GIT zu sagen, dass es niemals verschmelzen soll, wenn es aktive Änderungen gibt? Im Grunde, um die gleiche Warnung auf einem Git-Merge zu bekommen, wie ich auf einem Git-Checkout bekomme.

Dank Jaeden "Sifo Dyas" al'Raec Ruiner

+1

Kann nicht reproduzieren; Ich bekomme die genaue Warnung, die Sie erwähnen ("Ihre lokalen Änderungen an den folgenden Dateien würden durch Zusammenführen überschrieben: ...") –

Antwort

0

Sie benötigen git reflog.

Schauen Sie sich die Ausgabe von git reflog sehr sorgfältig an. Identifizieren Sie den Zustand, in dem Sie sich befanden, bevor Sie die Zusammenführung/Rebase/was auch immer ausgeführt haben. Dann tun Sie eine

git reset --hard [email protected]{WHATEVER NUMBER FIND FROM THE REFLOG} 
+1

Besser 'git Zweig speichern-meine-Arbeit HEAD @ {Was immer die Nummer aus dem REFLOG} vor versehentlich mehr Schaden anrichten. – mkrieger1

+0

@ mkrieger1 guter Rat, aber nicht unbedingt notwendig, da du den Reflog immer wieder verwenden kannst, um dorthin zurückzukehren, wo du warst :) – ffledgling