Ich sagte aus Versehen git rm -r .
. Wie kann ich mich davon erholen?
Ich habe mich nicht verpflichtet.
Ich denke, alle Dateien wurden zum Löschen markiert und auch physisch von meiner lokalen Kasse entfernt.
EDIT: Ich könnte (wenn ich den Befehl kenne) zum letzten Commit zurückkehren. Aber es wäre viel besser, wenn ich das einfach rückgängig machen könnte git rm -r .
. Weil ich nicht wirklich sicher bin, was ich nach dem letzten Commit und vor dem gemacht habe git rm -r .
.
-f
zugit rm
git keine Dateien entfernt , die inszeniert hatte oder unstaged Änderungen so eingit reset; git checkout .
alles erholen sollte.git restore
:git restore -s@ -SW -- .
. Siehe meine Antwort unten .Antworten:
Sollte es tun. Wenn Sie keine nicht festgeschriebenen Änderungen haben, die Sie interessieren, dann
sollte alles zwangsweise auf Ihr letztes Commit zurücksetzen. Wenn Sie nicht festgeschriebene Änderungen haben, der erste Befehl jedoch nicht funktioniert, speichern Sie Ihre nicht festgeschriebenen Änderungen mit
git stash
:quelle
git reset --hard HEAD
alle nützlichen Änderungen, die Sie in übergeordneten Verzeichnissen des aktuellen Arbeitsverzeichnisses vorgenommen haben , zerstört werden.Ich gab ein paar Dateien heraus und nahm vor meinem nächsten Commit weitere Änderungen vor, als mir klar wurde, dass ich einige dieser Dateien zurück brauchte. Anstatt zu verstauen und zurückzusetzen, können Sie einfach die einzelnen Dateien auschecken, die Sie verpasst / entfernt haben, wenn Sie möchten:
Dadurch bleiben Ihre anderen nicht festgeschriebenen Änderungen ohne Problemumgehungen erhalten.
quelle
git rm
statt einer ganzen rekursiven zurückzusetzengit rm -r
. Für ein vollständiges rekursives Löschen sind die anderen Lösungen möglicherweise besser, abhängig von der Anzahl der entfernten Dateien.Um einige einzelne Dateien oder Ordner wiederzugewinnen, können Sie Folgendes verwenden
Dadurch werden zuerst die Indexeinträge für
path/to/file
neu erstellt und die Datei wie beim letzten Festschreiben neu erstellt, dHEAD
. H.Hinweis: Sie können einen Commit-Hash an beide Befehle übergeben, um Dateien aus einem älteren Commit neu zu erstellen. Siehe
git reset --help
undgit checkout --help
für Details.quelle
git rm
Operation, ohne andere nicht festgeschriebene Änderungen zu löschen.Aktualisieren:
Da
git rm .
alle Dateien in diesem und untergeordneten Verzeichnissen an der Arbeitskasse sowie im Index gelöscht werden, müssen Sie jede dieser Änderungen rückgängig machen:Dies sollte tun, was Sie wollen. Es hat keine Auswirkungen auf übergeordnete Ordner Ihres ausgecheckten Codes oder Index.
Alte Antwort, die nicht war:
wird den Trick machen und keine nicht festgeschriebenen Änderungen löschen, die Sie an Ihren Dateien vorgenommen haben.
Danach müssen Sie alle
git add
Befehle wiederholen , die Sie in die Warteschlange gestellt haben.quelle
git alias.co="checkout"
so eingerichtet, dassgit co
es zur Kasse geht.Wenn am Ende keine der oben genannten Funktionen ausgeführt wird, können Sie möglicherweise Daten mithilfe des Vorschlags von hier abrufen: http://www.spinics.net/lists/git/msg62499.html
quelle
git rm rückgängig machen
git rm -r rückgängig machen
git rm -rf rückgängig machen
Uncommitted changes
beinhaltetnot staged changes
,staged changes but not committed
.quelle
git rm -rf
, da dadurch auch nicht verfolgte oder bereitgestellte (nur) Dateien gelöscht werden können.git rm -rf file
undgit rm -rf dir
löscht keine nicht verfolgten Dateien.Wenn Sie die Änderungen festgeschrieben und übertragen haben, können Sie dies tun, um die Datei wiederherzustellen
quelle
Es gibt bereits einige gute Antworten, aber ich könnte eine wenig verwendete Syntax vorschlagen, die nicht nur großartig funktioniert, sondern auch sehr explizit in dem ist, was Sie wollen (daher nicht beängstigend oder mysteriös).
quelle
Liste festschreiben
Zum Beispiel hat Stable Commit Hash:
45ff319c360cd7bd5442c0fbbe14202d20ccdf81
quelle
Ich hatte eine identische Situation. In meinem Fall war die Lösung:
quelle
Bei Git 2.23+ (August 2019) wäre der richtige Befehl zum Wiederherstellen von Dateien (und des Index) die Verwendung von ...
git restore
(nichtreset --hard
oder der verwirrendegit checkout
Befehl )Das ist:
Oder seine abgekürzte Form:
quelle
Ich hatte genau das gleiche Problem: Ich habe meine Ordner aufgeräumt, Dateien neu angeordnet und verschoben. Ich trat ein: git rm . und drücken Sie die Eingabetaste. und dann spürte ich, wie sich mein Darm etwas lockerte. Zum Glück habe ich git commit -m nicht sofort eingegeben.
Allerdings der folgende Befehl
stellte alles wieder her und rettete mein Leben.
quelle