697 Stimmen

Wiederherstellung nach dem Verlust von nicht übertragenen Änderungen durch "git reset --hard"

Gibt es eine Möglichkeit, nicht übertragene Änderungen am Arbeitsverzeichnis aus einer git reset --hard HEAD ?

13voto

Slycreator Punkte 788

Ich lief in gleichen Problem und ich war fast verrückt....initially ich das Projekt verpflichtet und zusammengeführt. Später, als ich versuchte git push --set-upstream origin master Ich habe folgende Fehlermeldung erhalten

  fatal: refusing to merge unrelated histories

also habe ich git reset --hard HEAD und ein 3-Wochen-Projekt gelöscht, aber diese wenigen Befehle unten retten den Tag:

git reset HEAD@{1}         //this command unstage changes after reset
git fsck --lost-found      //I got the dangling commit fc3b6bee2bca5d8a7e16b6adaca6a76e620eca4b
git show <dangling commit something like-> fc3b6bee2bca5d8a7e16b6adaca6a76e620eca4b>
git rebase fc3b6bee2bca5d8a7e16b6adaca6a76e620eca4b

11voto

Sandeep Punkte 17036

Die Informationen gehen verloren.

Da Sie keine Übertragungen vorgenommen haben, hat Ihr .git diese Informationen nie gespeichert. Also, grundsätzlich git kann es nicht für Sie wiederherstellen.

Aber, wenn Sie gerade git diff gibt es einen Weg, wie Sie die Terminalausgabe mit den folgenden 3 einfachen Schritten wiederherstellen können.

  1. Scrollen Sie durch Ihr Terminal und suchen Sie nach dem o/p von git diff . Speichern Sie die O/P in einer Datei namens diff.patch
  2. Suchen & Ersetzen alle 7 Leerzeichen und 8 Leerzeichen mit Tab( \t ) Zeichen und speichern Sie die Änderungen.
  3. Gehen Sie in Ihr Git-Repository. Wenden Sie den diff.patch ( patch -p1 < diff.patch )

Hinweis: Achten Sie beim Kopieren der Daten vom Terminal in eine Datei darauf, dass die Daten fortlaufend ausgegeben werden und keine redundanten Daten enthalten (durch Drücken der Auf- und Abwärtspfeile). Andernfalls könnten Sie es vermasseln.

7voto

Gabe Punkte 5657

Wenn Sie das Glück hatten, die gleichen Dateien in einem anderen Editor (z. B. Sublime Text) geöffnet zu haben, versuchen Sie es mit ctrl-z auf diesen Dateien. Es hat mich gerade gerettet

4voto

Friendly-Robot Punkte 1104

Ich habe auf die harte Tour herausgefunden, dass alle nicht übertragenen Dateien vor einer git reset --hard <commit> wird aus der Git-Historie entfernt. Ich hatte jedoch das Glück, meinen Code-Editor während der gesamten Zeit, in der ich mir die Haare raufte, geöffnet zu haben, so dass ich entdeckte, dass eine einfache control + z in jeder der betroffenen Dateien den Zustand der Datei wieder auf die Version vor Git zurückgesetzt, so dass ich alles, was ich nicht ausdrücklich verlangt habe, zurückgesetzt habe. Hooray!!

3voto

Calaf Punkte 9005

( Antwort für eine Untergruppe von Nutzern geeignet )

Wenn Sie mit einem (neueren) macOS arbeiten, und auch wenn Sie nicht in der Nähe Ihrer Time Machine-Festplatte sind, hat das Betriebssystem stündliche Backups gespeichert, die lokale Schnappschüsse .

Öffnen Sie Time Machine und navigieren Sie zu der Datei, die Sie verloren haben. Das Betriebssystem wird Sie dann fragen:

The location to which you're restoring "file.ext" already contains an
item with the same name. Do you want to replace it with the one you're
restoring?

Sie sollten in der Lage sein, die verlorene(n) Datei(en) wiederherzustellen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X