Wie stelle ich ein “git rm -r.”

Ich sagte zufällig git rm -r . . Wie erhole ich mich davon?

Ich habe mich nicht verpflichtet.

Ich denke, alle Dateien wurden zum Löschen markiert und wurden auch physisch von meiner lokalen Kasse entfernt.

EDIT: Ich könnte (wenn ich den Befehl kannte) zum letzten Commit zurückkehren. Aber es wäre viel besser, wenn ich einfach die git rm -r . rückgängig machen könnte git rm -r . . Weil ich nicht wirklich sicher bin, was ich nach dem letzten Commit und vor dem git rm -r . .

Solutions Collecting From Web of "Wie stelle ich ein “git rm -r.”"

 git reset HEAD 

Sollte es tun. Wenn Sie keine unerlaubten Änderungen haben, die Ihnen wichtig sind, dann

 git reset --hard HEAD 

sollte zwangsweise alles auf den letzten Commit zurücksetzen. Wenn Sie nicht festgeschriebene Änderungen haben, der erste Befehl jedoch nicht funktioniert, speichern Sie Ihre nicht festgeschriebenen Änderungen mit git stash :

 git stash git reset --hard HEAD git stash pop 

Ich habe ein paar Dateien gespeichert und vor meinem nächsten Commit Änderungen vorgenommen, als ich merkte, dass ich einige dieser Dateien zurück brauchte. Anstatt zu vercasting und zurückzusetzen, können Sie einfach die einzelnen Dateien auschecken, die Sie verpasst oder entfernt haben, wenn Sie möchten:

 git checkout HEAD path/to/file path/to/another_file 

Dadurch bleiben Ihre anderen nicht festgeschriebenen Änderungen intakt und es gibt keine Problemumgehungen.

Um einige einzelne Dateien oder Ordner wiederzugewinnen, kann man folgendes verwenden

 git reset -- path/to/file git checkout -- path/to/file 

Dies erstellt zuerst die Indexeinträge für path/to/file und erstellt die Datei so, wie sie beim letzten Commit war, dh HEAD .

Hinweis: Man kann einen Commit-Hash an beide Befehle übergeben, um Dateien von einem älteren Commit neu zu erstellen. Siehe git reset --help und git checkout --help für Details.

Aktualisieren:

Seit git rm . Löscht alle Dateien in diesem und untergeordneten Verzeichnissen im Arbeits-Checkout sowie im Index. Sie müssen diese Änderungen rückgängig machen:

 git reset HEAD . # This undoes the index changes git checkout . # This checks out files in this and child directories from the HEAD 

Dies sollte tun, was Sie wollen. Es wirkt sich nicht auf die übergeordneten Ordner Ihres ausgecheckten Codes oder Index aus.


Alte Antwort, die nicht war:

 reset HEAD 

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 git add die Sie in der Warteschlange hatten.

Wenn Sie keine der oben genannten functionen nutzen, können Sie möglicherweise Daten mithilfe des folgenden Vorschlags abrufen: http://www.spinics.net/lists/git/msg62499.html

 git prune -n git cat-file -p  

Wenn Sie die Änderungen festgeschrieben und übertragen haben, können Sie die Datei wiederherstellen

 // Replace 2 with the # of commits back before the file was deleted. git checkout HEAD~2 path/to/file 

Es gibt schon einige gute Antworten, aber ich könnte vorschlagen, eine wenig benutzte Syntax, die nicht nur gut funktioniert, sondern auch sehr explizit ist (also nicht gruselig oder mysteriös)

 git checkout @{"20 minutes ago"}  

Holen Sie sich die Liste ein

 git log --oneline 

Zum Beispiel hat Stable commit einen Hash: 45ff319c360cd7bd5442c0fbbe14202d20ccdf81

 git reset --hard 45ff319c360cd7bd5442c0fbbe14202d20ccdf81 git push -ff origin master 

rückgängig machen git rm

 git rm file # delete file & update index git checkout HEAD file # restore file & index from HEAD 

rückgängig machen git rm -r

 git rm -r dir # delete tracked files in dir & update index git checkout HEAD dir # restore file & index from HEAD 

rückgängig machen git rm -rf

 git rm -r dir # delete tracked files & delete uncommitted changes not possible # `uncommitted changes` can not be restored. 

Uncommitted changes staged changes but not committed Uncommitted changes umfassen not staged changes , staged changes but not committed .

Ich hatte eine identische Situation. In meinem Fall war die Lösung:

 git checkout -- . 

Ich hatte genau das gleiche Problem: Ich habe meine Ordner aufgeräumt, Dateien neu angeordnet und verschoben. Ich trat ein: git rm . und drücke Enter; und dann fühlte ich, wie sich mein Darm ein wenig lockerte. Zum Glück habe ich nicht sofort git commit -m “” eingegeben.

Jedoch der folgende Befehl

 git checkout . 

restaurierte alles und rettete mein Leben.