Szenario: Nach Ihrem letzten Commit haben Sie sich entschieden, die Codebasis umfangreich zu überarbeiten. Nach einiger Zeit merkt man, dass es länger dauert als erwartet, und Sie würden das Refactoring wirklich für eine andere Zeit verschieben und an dringenderen Aufgaben arbeiten. Aber Sie möchten nicht die gesamte Refactoring-Arbeit verlieren, die Sie bisher geleistet haben.
Gibt es also eine Möglichkeit, die Arbeitskopie zu "archivieren" oder zu "verzweigen" (im Wesentlichen, sie beiseite zu legen, sie aber im Repository für späteren Zugriff zu behalten) und dann von dort zum letzten guten Commit zurückzukehren und von dort fortzufahren, ohne Angst davor, mehrere Köpfe zu kreieren oder die beiden durcheinander zu bringen?
Mach dir keine Sorgen wegen "der Angst vor zwei Köpfen". Zwei Köpfe sind ein sehr Normalzustand. Es heißt anonyme Zweige, und es ist eine der Möglichkeiten, wie Menschen temporäre Zweige in Mercurial tun.
Einfach committen und dann auf tip-1 updaten und schon kann es losgehen:
%Vor%und weg du gehst. Wenn Sie ein Lesezeichen (weniger dauerhaft als ein Tag) auf diesen Kopf setzen möchten, können Sie das tun, aber Sie müssen sich darüber keine Gedanken machen.
Sie können immer einen Kopf drücken, ohne einen anderen zu drücken, indem Sie hg push -r HEAD
verwenden, wobei dies auch hg push -r .
Fürchte dich nicht vor Köpfen - sie sind es, was ein DAG-basiertes VCS stark macht.
Da mercurial feste Links verwendet, können Sie beide Repositories auf Ihrem lokalen Rechner mit minimalem Platzbedarf behalten. Befehle:
$ hg Umbau Refactor
$ CD ..
$ hg Klon Refactor Stable
$ cd Stable
$ hg revert -r REVISION_NUMBER
Sie können es auf die einfache Weise tun:
%Vor% Ihre Änderungen werden nun in tmp
gespeichert. Sie können sie mit
und du bist wieder da, wo du warst. Es gibt Erweiterungen wie shelve , die das oben genannte für Sie automatisiert.
In git würden Sie einen "Versteck" machen. Laut Dies hat hg "shelve", aber es erfordert eine Erweiterung.
Tags und Links mercurial version-control shelve