Ich habe es geschafft, einen großen Fehler zu machen (an einem Montagmorgen). Beim Arbeiten am Master habe ich vergessen, einen neuen Zweig zu erstellen, Änderungen an den Dateien vorgenommen und dann versehentlich zum Master zurückgekehrt, wodurch alle Aktualisierungen verloren gingen. Ich habe die aktualisierten Dateien nicht festgeschrieben.
Habe ich alle Updates verloren oder kann ich sie abrufen?
Frag mich nicht wie, denn jedes Mal, wenn ich darüber nachdenke, muss ich mir ins Gesicht schlagen.
Antworten:
Wenn Sie nicht hatte begangen , inszeniert oder verstaute die vorgenommenen Änderungen, gibt es keine Möglichkeit, diese Änderungen wiederherstellen können.
BEARBEITEN: Verlorene Änderungen wiederherstellen. Hinzufügen auf Mark Longairs Vorschlag (im Kommentar). Dies beinhaltet auch ein paar SO-Links aus seiner Antwort unten (*), die ich ziemlich informativ fand.
Wenn Sie jemals begangen einige Veränderungen und verloren haben , dass begehen (wie in einem frei stehenden Zustand zu begehen), können Sie feststellen , dass mit commit
reflog
. Siehe diese SO-Frage *.Wenn Sie Ihre zuletzt bereitgestellten Änderungen verloren haben, können Sie diese auch wiederherstellen. Siehe diese SO-Frage *. (Ich habe es nie selbst benutzt oder ausprobiert).
Wenn Sie eine Änderung gespeichert haben, können Sie diese auch mit
pop
oder wiederherstellenapply
. (Ich bin nicht sicher, ob die geknallten / verworfenen Verstecke auch wiederherstellbar sind, die nicht festgeschrieben wurden). Möglicherweise ist dieses Wiederherstellen des abgelegten Stashs in Git hilfreich.Wenn es andere Methoden gibt, die jemand vorschlagen kann, würde ich diese Antwort weiter bearbeiten, um sie hinzuzufügen.
quelle
stash
Tipp hat mich dazu gebracht, die richtige Vorgehensweise zu finden. Vielen Dank in der TatZwei Longshots: Einige IDEs, wie z. B. Delphi, führen einen Editorverlauf. Möglicherweise haben Sie dort einen Rückgriff.
Wenn sich Ihr lokales Arbeitsverzeichnis im Ordner "MyDocuments" befindet, wurde es möglicherweise automatisch von Windows Home Server, Carbonite, MozyPro usw. gesichert. Diese sind normalerweise "Festlegen und Vergessen". Vielleicht hast du es vergessen?
quelle
Ich war in der gleichen Situation gefangen.
Hatte vor dem --hard-Reset eine Liste der geänderten Dateien im Terminal, ging in meinen Editor (Sublime 2, spielt aber keine Rolle), öffnete jede Datei und drückte einmal auf cmd + z (Rückgängig), wodurch die Änderungen effektiv rückgängig gemacht wurden Nach dem Hard-Reset habe ich meine nicht festgeschriebenen Änderungen zurückbekommen :)
quelle
Die entscheidende Frage hier ist, was Sie getan haben, nachdem Sie Änderungen an den Dateien vorgenommen haben. Wenn Sie ein Commit erstellt haben, das den neuen Status der Dateien enthält, sollten Sie in der Lage sein, diese
git reflog
wiederherzustellen, indem Sie die letzten Einträge in durchsuchen, die SHA1-Summe des Commits ermitteln und daraus einen neuen Zweig mitgit branch recovered <SHA1sum>
oder ähnlichem erstellen . In dieser Antwort finden Sie ein Beispiel dafür .Wenn Sie
git add
eine der Dateien bearbeitet haben, um sie zu inszenieren, sollten Sie sie auch zurückbekommen können, aber das ist eher mehr Arbeit - Jakub beschreibt in dieser Antwort, wie das geht .Wenn Sie einen Fehler gemacht haben
git stash
, um sich einen sauberen Status zu verschaffen, können Sie ihn natürlich wie jeden anderen Vorrat zurückerhalten.Ansonsten befürchte ich, dass die Nachrichten nicht gut sind.
Ich hoffe, es ist nicht ärgerlich, post-hoc darauf hinzuweisen, aber um einfach zum
master
Zweig zurückzukehren, hätten Sie keinen Befehl verwenden müssen, der Ihre Daten verlieren könnte -git checkout master
hätte Ihnen gesagt, dass Sie bereits im Hauptzweig waren und zeigen Sie alle nicht festgeschriebenen Änderungen an. (Solltegit reset --hard
wohl die Bestätigung "Ja, ich meine das wirklich" haben, wenn es nicht festgeschriebene Änderungen gibt, wenn man bedenkt, wie oft^W
ich Daten auf diese Weise verliere.)quelle
git reset --hard HEAD~1
. Alle nicht bereitgestellten nicht festgeschriebenen Änderungen waren verschwunden. Keine Fragen gefragt.git reset --hard
Daten verloren gehen könnten, wäre eine gute Funktion, nicht dass Git dies tut.Verwenden Sie das Reflog.
git reflog
zeigt Ihnen in chronologischer Reihenfolge eine Historie aller Commits, an denen Sie teilgenommen haben.Wenn Sie Ihre Änderungen durch Auschecken des Masters verloren haben, haben Sie wahrscheinlich kopflos gearbeitet.
git status
wird Ihnen sagen, ob Sie ohne Kopf arbeiten. (Wie auchgit branch
).Kopflos arbeiten ist nicht so schlecht (ich mache es die ganze Zeit absichtlich), aber Sie werden sich stärker auf das Reflog verlassen können.
Wenn Sie Ihre Änderungen jedoch in keiner Weise festgeschrieben haben, können Sie diese Dateien nicht abrufen. Dies wäre nur realistisch, wenn Sie einen Hard-Reset durchgeführt oder eine Kasse explizit erzwungen hätten. Erzwingen Sie keine Änderungen, es sei denn, Sie sind sicher, dass Sie mit dem Verlust von Daten zufrieden sind.
Normalerweise erfolgt das Erzwingen in git durch Angabe
-f
.quelle
Ich habe das leider mehr als einmal getan. Ohne irgendetwas zu begehen, hat git keine Ahnung, was du geschrieben hast. Selbst wenn Sie sich dann rückwärts verpflichten würden, bin ich mir nicht sicher, ob Reflex helfen würde.
quelle
git stash apply
rettete den Tag.