Machen Sie 'git push -f' von einer Maschine rückgängig, die keine geklonte Historie hat

322
Zach

Also, Hintergrundgeschichte. Meine Festplatte ist auf dem Computer A abgestorben. Fast alle meine Arbeiten waren bereits auf GitHub gepusht, und an dieser Front war alles schlecht, außer einem Repository. Als ich das begriff, fand ich heraus: "Hey, cool, ich habe eigentlich nur eine Teerdatei mit den letzten Änderungen an Guy Guyerson geschickt." Also bekomme ich die tar-Datei und mache dann etwas Dummes / zeige, wie viel ich von einem GitHub noob mache. Anstatt das Repository zu klonen, dann die aktualisierten Dateien hinzuzufügen und dann zu pushen, denke ich mir: Ich sollte diese Dateien einfach pushen können, kein Problem. Also git init, füge die Fernbedienung hinzu und drücke dann, aber es funktioniert nicht ... weil die Zusammenführungen merkwürdig sind. Ich weiß, dass die Zusammenführungen schlecht sind, also beschließe ich, diese Dateien zu aktualisieren und -f zu drücken. Da dies jedoch ein neues .git-Verzeichnis ist,

Gibt es sowieso noch etwas, um darauf zurückzugreifen, da die aktuelle lokale Version keine Erinnerung daran hat, dass jedes vorherige Commit ausgeführt wird? Ich habe den Anfang des Hashes, den er überschrieben hat, aber die Fernbedienung hat jetzt auch keine Erinnerung an diesen Commit.

Ich denke, dass der HDD-Absturz möglicherweise ein anderes Opfer gefordert hat, als meine Frustration überkam und ich wollte nur die Updates pushen, während ich sie noch auf diesem älteren Computer hatte.

Danke, Zach

0
In welcher Umgebung arbeitest du? Ist das Eclipse ??? Java ??? Dale vor 7 Jahren 0
Tut mir leid, ich verstehe nicht, warum die Umgebung von Bedeutung ist, aber ich arbeite vom Terminal unter Linux (obwohl der ursprüngliche Computer ein Mac war). Der Code basiert ausschließlich auf C ++. Glücklicherweise bin ich der einzige, der zu diesem Projekt beigetragen hat. Es ist also kein großer Verlust, abgesehen von den Arbeitsstunden, die ich in die Makros gesteckt habe, die ich gerade verloren habe. Zach vor 7 Jahren 0
Hier kann es eine Rolle spielen. In Java ist mir so etwas mit Eclipse passiert. Ich habe tatsächlich Dateien gelöscht, die nicht gespeichert wurden. Wohlgemerkt, ich wusste, welche Datei gelöscht wurde und wo sie war. Eclipse speichert den Verlauf dieser Datei, auch wenn sie gelöscht wird. Was ich also tat, war, die Datei als leere Datei neu zu erstellen, wo sie vorher vorhanden war, und dann mit der rechten Maustaste darauf geklickt und in der Historie nach dem Inhalt der Datei gesucht. Dann habe ich es aus der Geschichte von Eclipse restauriert. Deshalb könnte die Umwelt eine Rolle spielen. Dale vor 7 Jahren 0

1 Antwort auf die Frage

0
Zach

Die Online-Version von GitHub zeichnet diese alten Commits auf, ich wusste nur nicht, wie ich darauf zugreifen kann. Für alle zukünftigen Leser: Wenn Sie die Commit-ID haben, die Sie versehentlich überschrieben haben, können Sie wie folgt darauf zugreifen:

https://github.com/userName/repoName/tree/commitNum

Von dort aus können Sie die Dropdown-Liste Baum / Zweig verwenden, um aus diesem Commit einen neuen Zweig zu erstellen. Dieser kann dann in ein lokales Verzeichnis geklont werden und dann von dort aus zusammengeführt werden.