Auf einem Server befindet sich ein git-gesteuerter Ordner, in dem der Hauptzweig ausgecheckt ist und ein ganzer Stapel von Dateien geändert und nicht festgeschrieben wurde. Gibt es eine Möglichkeit für mich, die Änderungen in einem separaten Zweig festzuschreiben, damit ich zu einer sauberen Version zurückkehren kann?
Das heißt, ich möchte alle Änderungen dieser Personen effektiv rückgängig machen, sie aber bei einer anderen Gelegenheit speichern. Wenn diese Person ihre Änderungen wünscht, kann sie zu diesem Zweig wechseln.
(Ja, ich weiß, dass Git nicht so funktioniert, aber das ist meine Situation!) Alle Ideen werden sehr geschätzt.
git
version-control
dvcs
git-branch
Corydoras
quelle
quelle
Antworten:
Zunächst wird der Wechsel zu einem anderen Zweig basierend auf dem aktuellen HEAD folgendermaßen ausgeführt:
Übernehmen Sie alle Änderungen (vorausgesetzt, keine neu hinzugefügten Dateien, sonst
git add
diese):Gehen Sie zurück zum Hauptzweig:
Die zuvor nicht festgeschriebenen Änderungen befinden sich alle in der Zweigstelle newbranch, und der Master befindet sich weiterhin in dem Zustand, in dem er ohne diese Änderungen war.
quelle
<newbranch>
.Diese Methode ist nützlich:
Wo:
<new_branch>
ist dein neuer Zweig (zBmy_branch
)<start point>
ist Ihr Startzweig (master
in Ihrem Fall)-B
Erstellt einen neuen Zweig ab<start point>
, wenn er bereits vorhanden ist, und setzt ihn dann zurück (er schlägt nicht fehl,-b
wenn der Zweig bereits vorhanden ist).-m
kann es nützlich sein, beim Wechseln von Zweigen anzugeben. Dadurch wird eine Drei-Wege-Zusammenführung zwischen dem aktuellen Zweig und dem Inhalt Ihres Arbeitsbaums durchgeführt (nützlich für die Skripterstellung).Siehe:
man git-checkout
für weitere Details.quelle
Sie können Ihre Änderungen jederzeit aufbewahren.
Denken Sie auch daran, dass Sie diesen Zweig immer zurückschieben können, wenn Sie sich auf den "falschen" Zweig festlegen, da der Zweig nichts anderes als ein Zeiger auf einen Commit ist.
quelle
git checkout -b bravenewmaster
. Es ist weniger tippend und berührt nicht alle geänderten Dateien unnötig.git
aus irgendeinem Grund nicht zulässt,git checkout -b
wenn es Änderungen gibt. Ansonsten warum fragen? ;-)