2 Stimmen

Löscht EGit "Commit zurücksetzen" dauerhaft den Original-Commit?

Ich lerne immer noch den Workflow von Git für verschiedene Aufgaben und habe festgestellt, dass ich versehentlich im falschen Arbeitszweig war, als ich einige Dateien committed habe. Also habe ich mit EGit den Commit-Verlauf aufgelistet und im Kontextmenü Revert Commit für ein paar Commits ausgewählt.

Ich habe inzwischen festgestellt, dass ich diese Commits haben wollte, aber die Original-Commits nirgendwo finden kann. Es scheint, als wären die Original-Commits so gut wie gelöscht worden. Selbst ein vollständiges Log-Listing des gesamten Git-Repositories zeigt weder den Original-Commit noch die Revert-Commits an.

Meiner Meinung nach sollte der Revert-Commit laut EGit-Dokumentation nur die Änderungen rückgängig machen, indem er einen neuen Commit auf dem alten erstellt, um rückgängig zu machen, was getan wurde. Allerdings scheint es, dass meine Original-Commits tatsächlich gelöscht wurden.

Bin ich verloren? Habe ich diese Änderungen dauerhaft verloren? Ich verwende Eclipse 3.7 mit EGit 2.1.0.20120919.

4voto

git revert, wie Sie gesagt haben, löscht die Commits nicht. Es erstellt nur einen neuen Commit, der die Änderungen eines bestimmten übergebenen Commits rückgängig macht. Daher ist der ursprüngliche Commit immer noch im Repository vorhanden. Wenn Sie die Commits mit git log auflisten, sollte der ursprüngliche Commit und der Commit angezeigt werden, der das rückgängig macht, was der ursprüngliche Commit tut.

Um den ursprünglichen Inhalt des Commits wiederherzustellen, können Sie den Rückgängigmachen-Commit zurücksetzen oder den Status Ihres Repositorys auf den Commit vor dem Rückgängigmachen-Commit mit git reset --hard hash ändern, wobei hash den Hash des Commits vor den Commits repräsentiert, die Ihr git revert darstellen.

1voto

Andreas Wederbrand Punkte 35723

Dein bester Ansatz ist es, Eclipse und Egit eine Weile zu verlassen und die Kommandozeile zu verwenden.

Es gibt ein Tool namens git reflog, das dir viel mehr anzeigen kann als git log. Ich empfehle dir, es auszuprobieren, um zu sehen, was du mit dem Repository gemacht hast.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X