2016-10-13 4 views
0

Wenn ich eine Kopie von MyDirectory, die unter Git Versionskontrolle ist (mit einem .git Unterordner) und dann ein Commit machen, tut dies alles "verhalten", wie es eigene kleine Repo, mit Versionsgeschichte und so?Kann ich ein Git Repo durch sein Backup ersetzen?

Könnte ich dann die vorherige MyDirectory durch diese Kopie ersetzen und einfach weiterarbeiten?

Hintergrund: Mein Git Repo wurde alle verschmutzt. Ich hoffe, ich kann es nur durch ein Backup des gesamten Verzeichnisses vom vorherigen Tag ersetzen und von dort weitergehen.

+3

Warum "git checkout" die gestrige Version nicht? – Danh

+1

Wie auch immer, Sie müssen vollständig entfernen, bevor Sie es durch sichern ersetzen – Danh

Antwort

2

Ja, Sie können dies tun, und es sollte keine Probleme verursachen.

Alles, was Git benötigt, um Ihren Versionsverlauf zu verfolgen, befindet sich im Ordner .git. Wenn Sie also diesen Ordner durch eine ältere Version dieses Ordners ersetzen, wird Ihr Repo auf diesen älteren Status zurückgesetzt. Im Gegensatz zu mit einem Git Rollback mit git checkout oder git revert, werden Sie auch verlieren alle Geschichte, die seit dem Repo seitdem hinzugefügt wurde.

Um sicher zu sein, wie @Danh suggested, sollten Sie die vorhandene Version des Ordners löschen, bevor Sie die Sicherung wiederherstellen. (Da Git-Objekte unveränderlich sind, bin ich mir nicht sicher, ob dies notwendig ist. Es sollte aber nicht schaden.) Wenn Sie nicht riskieren möchten, Daten aus der vorhandenen Version des Ordners zu verlieren, können Sie auch verschieben oder benennen Sie es um und stellen Sie die Sicherung wieder her.

Je nachdem, was Sie mit "alle verschmutzt" meinen, ist es möglicherweise immer noch möglich, ohne Wiederherstellung von der Sicherung wiederherzustellen (besonders wenn Sie keine "gefährlichen" Befehle ausgeführt haben, wie etwa irgendetwas mit --force). Fühlen Sie sich frei zu search around oder ask here, wenn Sie Hilfe benötigen!

Verwandte Themen