Wie rückgängig machen git rm -rf Ordnername ohne zuerst zu Begehen?
Habe ich:
git init
git add .
git rm -rf dirname
Blick auf andere answsers, git reset --hard HEAD
, git checkout -f
und git reflog
hat nicht funktioniert, anscheinend weil es keine LEITER, um zurück zu gehen, noch ein commit, um die Dateien wieder aus.
Gibt es eine Möglichkeit, um die Dateien zurück?
- Bitte aktualisieren Sie die akzeptierte Antwort auf das man eigentlich erlauben, um die Dateien zurück.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es keine Möglichkeit.
Normalerweise
git rm
überprüft die Dateien wurden bereits begangen, bevor Sie Sie löschen, so dass Sie nicht verlieren Ihre Arbeit. Jedoch, mit-f
überschreibt diese überprüfen.Kurz:
-f
.-f
bedeutet, dass Sie besser sicher sein, was Sie tun.Warnung: Laufen
git prune
ohne die-n
option (1) löschen Ihre Daten nicht erreichbar.Kann es ein Weg sein, mit
git prune
undgit cat-file
.Läuft
git prune -n
eine Liste, welche Objekte entfernt werden würden durch Beschneidung:Jede Zeile entspricht einer gelöschten Datei.
Nun, mit
git cat-file
sind wir in der Lage, zum wiederherstellen der Inhalt der entfernten Datei in eine neue Datei:(1) Von der
git prune
docs:Nope, soweit ich weiß. Ich glaube, dass git unterbricht die Verbindung der Dateien, nur wie mache
rm -rf
tut. Egal, ob es weiß, über die Dateien oder nicht, es wird gerne nuke Verzeichnis. Wirklich, die einzige Möglichkeit ist, zu versuchen, verwenden Sie eine Datei recovery-tool, als ob Sie hatte getanrm -rf
git reset --hard
half beim löschen wurde nicht begangen, noch und, allgemein gesprochen, die Löschung wurde unterbrochen durchCtrl+Z
Wenn git ist nicht die Verfolgung der
dirname
Verzeichnis, es wird Ihnen nicht erlauben, um das Verzeichnis zu löschen mitgit rm -rf
es nicht wissen. Sie wird ( würde) eine Fehlermeldung erhalten, wieNur so könnten Sie gelöscht haben, ist, wenn Sie getan hatte, ein
git add .
odergit add dirname
nach dergit init
. Wenn das der Fall ist, Ihre Dateien sind Weg und können Sie nicht bekommen Sie zurück so war es nie ein commit und git nicht verfolgen. Es ist so gut wie einerm -rf
auf einen normalen Ordner ( und können sich nicht erholen, es sei denn, Sie haben sicherungen)-f
? Das "überschreibt die up-to-date check.", was auch immer das bedeutet.-f
imgit rm
ist nur zu überschreiben up-to-date check.git rm -rf
würde nicht berühren Sie eine unstaged-Verzeichnis, aber es wird fröhlich purge inszeniert, aber nicht verpflichtet, eine.