GIT: Daten gelöscht
lima-city → Forum → Heim-PC → Software
break
code
dank
datei
datum
einlesen
entfernen
entsprechen
file
hoffnung
index
mode
notfall
null
pfad
programm
target
versagen
wiederherstellen
zustand
-
Hallo ihr,
ich habe einen Notfall: ich habe GIT (unter Ubuntu 10.04 LTS) ausprobiert, meinen Projektordner für sämtliches Programmierzeugs zur Überwachung hinzugefügt. Da ich sie wieder aus der Kontrolle entfernen wollte, habe ich
git rm -r .
verwendet. Dummerweise hat das auch gleich alle meine Daten gelöscht. Allerdings existieren unter /pfad/.git noch Dateien in einer Größe von über 500 MB (könnte etwa der Ursprünglichen Größe entsprechen).
Jetzt die Frage: kann ich die Daten mit GIT wiederherstellen? (Die FileRecoverys versagen aus irgendwelchen Gründen alle)
Grüße, Tillorgias
PS: Es ist wirklich ein Notfall! -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
...]Die FileRecoverys versagen aus irgendwelchen Gründen alle[...
hast du es schon mit guten Recoverys versucht? (o&o recovery, usw...)
soweit ich weiß, werden allerdings bei dem Befehl alle files aus dem Index und aus dem working tree gelöscht...
also weiß ich auch nicht wircklich wie ma ne filewiederherstellung selbst machen kann..leider...
aber du kannst ja mal bei Firmen wie rsedata oder dergleichen nachfragen, ob das theoretisch möglich ist... -
Bitte sage, was du siehst, wenn du "git log" eingibst. Wenn du da zumindest einen commit hast, mache ein "git reset --hard". Das sollte dann den Zustand zu diesem Commit zurückversetzen. Wenn du nach der Datenlöschung nochmals commitet hast, nutze "git checkout {id-des-letzten-commits-wo-noch-nicht-alles-gelöscht-ist}".
Beitrag zuletzt geändert: 18.6.2010 20:35:46 von nikic -
Hallo, und danke für die Antworten.
ich habe es mit o & o Recovery und Recuva versucht. Hat nichts gebracht.
Ich habe die Daten mit einer "etwas unsauberen" Lösung wiederherstellen können. Ich habe mittels
git diff > ~/gitrecovery
die Daten einlesen können und dann ein Programm geschrieben: nicht schön, aber selten (mit Qt 4):
QString filepath = "/home/tillorgias/gitrecovery"; QFile file(filepath); if(!file.open(QIODevice::ReadOnly)){ qDebug()<<QString("Failed to open %1").arg(file.fileName()); return; } QString tmp; while(!file.atEnd()){ while(!file.atEnd()){ tmp = file.readLine(); if(tmp.startsWith("+++")){ tmp = tmp.right(tmp.length()-6).trimmed(); tmp = "/tmp/recovered/"+tmp; qDebug()<<tmp; //tmp contains now the relativ filename break; } } QFile f(tmp); QString pnp; QDir dir; dir.mkdir(tmp.left(tmp.lastIndexOf("/"))); if(!f.open(QIODevice::WriteOnly)){ qDebug()<<QString("Failed to open %1").arg(f.fileName()); return; } //Skip one line file.readLine(); while(!file.atEnd()){ pnp = file.readLine(); if(!pnp.startsWith("+")) break; f.write(QVariant(pnp.right(pnp.length()-1)).toByteArray()); } f.close(); }
Das erstellt alle dateien wieder in /tmp/recovery, von wo aus man sie dann kopieren kann.
Dieses Programm funktioniert, da git diff dann bei alle Dateien die "fehlenden" zeilen angibt, zum Beispiel so:
... diff --git a/Crypto/Crypto.pro b/Crypto/Crypto.pro new file mode 100644 index 0000000..8f2b30e --- /dev/null +++ b/Crypto/Crypto.pro @@ -0,0 +1,10 @@ +# ------------------------------------------------- +# Project created by QtCreator 2010-02-12T14:19:51 +# ------------------------------------------------- +QT -= gui +TARGET = Crypto +CONFIG += console +CONFIG -= app_bundle +TEMPLATE = app +SOURCES += main.cpp +HEADERS += diff --git a/Crypto/Crypto.pro.user b/Crypto/Crypto.pro.user new file mode 100644 index 0000000..999fa4e --- /dev/null ...
Ist ein bisschen ausführlicher, in der hoffnung, das jemand, der mit dem gleichen problem zu kämpfen hat, diese lösung verwenden kann.
Grüße Tillorgias
*Der thread kann geschlossen werden* -
Git benutzt man doch gerade damit sowas eher nicht passieren kann. Hättest du das "git reset --hard" versucht, wärst du zu dem selben Ergebnis gekommen, nur ohne das Script ;)
-
Hi,
mir ist schon klar, wofür man GIT verwendet. Ich war mir nur ziemlich sicher, dass man die Daten, wenn man sie einmal auch aus GIT entfernt hat, nicht mehr mit den Standardkommandos zurücksetzen kann.
Trotzdem danke. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage