Wenn die Situation dringend ist und Sie nur schnell und schmutzig das tun möchten, was der Fragesteller gefragt hat , vorausgesetzt, Ihr Projekt befindet sich in einem Verzeichnis mit dem Namen "Mein Projekt":
SCHNELL UND SCHMUTZIG : Abhängig von den Umständen kann schnell und schmutzig tatsächlich sehr GUT sein. Was meine Lösung hier tut, ist NICHT , die Dateien, die Sie in Ihrem Arbeitsverzeichnis haben, irreversibel durch Dateien zu ersetzen, die aus den Tiefen des Git-Repositorys gezogen / extrahiert wurden, das unter Ihrem .git / -Verzeichnis lauert, und zwar mit teuflisch cleveren und teuflisch mächtigen Git-Befehlen, von denen es solche gibt viele. SIE MÜSSEN KEIN TIEFES MEER-TAUCHEN TUN, UM eine möglicherweise katastrophale Situation wiederherzustellen, und der Versuch, dies ohne ausreichendes Fachwissen zu tun, kann sich als tödlich erweisen .
Kopieren Sie das gesamte Verzeichnis und nennen Sie es etwas anderes, wie "Mein Projekt - Kopie". Angenommen, Ihre Git-Repository-Dateien ("Repo") befinden sich im Verzeichnis "Mein Projekt" (der Standardspeicherort für sie, unter einem Verzeichnis namens ".git"), dann haben Sie jetzt sowohl Ihre Arbeitsdateien als auch Ihre Repo-Dateien kopiert.
Tun Sie dies im Verzeichnis "Mein Projekt":
.../my project $ git reset --hard [first-4-letters&numbers-of-commit's-SHA]
Dadurch wird der Status des Repos unter "Mein Projekt" auf den Stand zurückgesetzt, als Sie diesen Commit durchgeführt haben (ein "Commit" bedeutet eine Momentaufnahme Ihrer Arbeitsdateien). Alle Commits seitdem gehen für immer unter "Mein Projekt" verloren, ABER ... sie sind weiterhin im Repo unter "Mein Projekt - Kopie" vorhanden, da Sie alle kopiert haben diese Dateien - einschließlich der Dateien unter ... /. Git /.
Sie haben dann zwei Versionen auf Ihrem System ... Sie können Dateien von Interesse oder was auch immer aus dem vorherigen Commit untersuchen oder kopieren oder ändern. Sie können die Dateien unter "Mein Projekt - Kopie" vollständig verwerfen, wenn Sie sich für die neue Arbeit entschieden haben, da das wiederhergestellte Commit nirgendwo hingegangen ist ...
Wenn Sie den Status des Projekts fortsetzen möchten, ohne die Arbeit seit diesem abgerufenen Commit tatsächlich zu verwerfen, müssen Sie Ihr Verzeichnis erneut umbenennen: Löschen Sie das Projekt mit dem abgerufenen Commit (oder geben Sie ihm einen temporären Namen) und benennen Sie Ihr " mein Projekt - kopiere "Verzeichnis zurück in" mein Projekt ". Versuchen Sie dann vielleicht, einige der anderen Antworten hier zu verstehen, und führen Sie wahrscheinlich bald ein weiteres Commit durch.
Git ist eine brillante Kreation, aber absolut niemand kann sie einfach "on the fly" aufgreifen: auch Leute, die versuchen, sie viel zu oft zu erklären setzen Vorkenntnisse anderer VCS [Versionskontrollsysteme] voraus und vertiefen sich viel zu tief zu früh und begehen andere Verbrechen, wie die Verwendung austauschbarer Begriffe zum "Auschecken" - auf eine Weise, die manchmal fast so berechnet erscheint, dass sie einen Anfänger verwirrt.
Um sich viel Stress zu ersparen, lernen Sie aus meinen Narben. Man muss so ziemlich ein Buch über Git lesen - ich würde "Versionskontrolle mit Git" empfehlen . Mach es eher früher als später. Wenn Sie dies tun, denken Sie daran, dass ein Großteil der Komplexität von Git durch Verzweigen und anschließendes Zusammenführen entsteht: Sie können diese Teile in jedem Buch überspringen. Nach Ihrer Frage gibt es keinen Grund, warum die Leute Sie mit der Wissenschaft blenden sollten .
Besonders wenn dies zum Beispiel eine verzweifelte Situation ist und Sie ein Neuling bei Git sind!
PS: Ein anderer Gedanke: Es ist (jetzt) eigentlich ganz einfach, das Git-Repo in einem anderen Verzeichnis als dem mit den Arbeitsdateien zu speichern. Dies würde bedeuten, dass Sie nicht das gesamte Git-Repository mit der oben genannten Quick & Dirty-Lösung kopieren müssen. Die Antwort von Fryer finden Sie --separate-git-dir
hier . Seien Sie jedoch gewarnt : Wenn Sie ein "separates Verzeichnis" -Repository haben, das Sie nicht kopieren, und Sie einen Hard-Reset durchführen, gehen alle Versionen nach dem Reset-Commit für immer verloren, es sei denn, Sie haben, wie Sie unbedingt sollten, Sichern Sie Ihr Repository regelmäßig, vorzugsweise in der Cloud (z. B. Google Drive ).
Zu diesem Thema "Sichern in der Cloud" besteht der nächste Schritt darin, ein Konto (natürlich kostenlos) bei GitHub oder (meiner Ansicht nach besser) GitLab zu eröffnen . Sie können dann regelmäßig einen git push
Befehl ausführen, um Ihr Cloud-Repo "richtig" auf den neuesten Stand zu bringen. Aber auch hier kann es zu früh sein, darüber zu sprechen.