2010-03-08 11 views
5

Wenn es Commits und viele Änderungen seit einem früheren Commit gab, gibt es eine einfache Möglichkeit, alles auf den genauen Zustand dieses früheren Commits zurückzusetzen?Git: Wie alles genau in den Zustand eines vorherigen Commit zurückgesetzt werden?

Wenn ja, ist es möglich, einfach wieder in den aktuellen Zustand zu wechseln, wenn ich es auch möchte?

Ich habe festgestellt, dass dieser alte Commit eigentlich der richtige ist, und alle Änderungen seitdem nur als Referenz beibehalten will, aber alle zukünftigen Arbeiten werden auf diesem alten Commit basieren.

Antwort

6

Es klingt wie Sie Ihre aktuelle Arbeit auf einem Zweig setzen wollen:

git branch saved_work 
git reset --hard previouscommit 

nun Ihre saved_work Zweig enthält alles nachpreviouscommit und master wird auf previouscommit zurückgespult.

1

Ihre aktuellen Änderungen Commit:

git commit 

Dann Kasse die alte begehen:

git checkout yourcommit 

eine Option -f alle lokalen Änderungen zerstören Hinzufügen.

2

Da Sie auf den früheren Zustand zurückkehren wollen:

git stash 
git checkout -b new_branch <tree-ish> 

Die oben Ihre unbestätigten Änderungen speichern und ermöglicht es Ihnen, einen neuen Zweig zu erstellen um die spezifischen begehen. Arbeiten, wie Sie und später wünschen, wenn Sie auf den früheren Zustand ändern wollen:

git stash 
git checkout earlier_branch 
+0

Wie würde ich diesen überprüften Zweig als Master festlegen? Ich habe erkannt, dass dieses alte Commit tatsächlich das richtige ist und alle Änderungen seitdem nur als Referenz beibehalten möchte, aber alle zukünftigen Arbeiten werden auf diesem alten Commit basieren. –

Verwandte Themen