Gibt es eine Möglichkeit, nicht übertragene Änderungen am Arbeitsverzeichnis aus einer git reset --hard HEAD
?
Antworten
Zu viele Anzeigen?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
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.
- 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 - Suchen & Ersetzen alle 7 Leerzeichen und 8 Leerzeichen mit Tab( \t ) Zeichen und speichern Sie die Änderungen.
- 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.
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!!
( 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.