Wir haben jetzt einen "Stiging" -Zweig, in dem "Staging" eine weitaus bessere semantische Anpassung zu sein scheint. Was ist eine gute Strategie, um damit umzugehen?
204
Aktualisieren Sie den stiging
Zweig und erstellen Sie einen neuen Zweig daraus. Dann schließen Sie den alten Zweig.
Zusammenfassend:
hg update stiging
hg branch staging
hg commit -m"Changing stiging branch to staging."
hg update stiging
hg commit --close-branch -m"This was a typo; use staging instead."
hg push --new-branch
--force
. Zum Beispiel :hg branch --force v3
. Dies führt zu einerhg update v3
Aktualisierung auf den neuenv3
Zweig, wie Sie es wollten.stiging
vor dem Verzweigen schließen, erhalten Sie kein "loses Ende"Für zukünftige Leser: Mit der
rebase
Erweiterung können Sie einen neuen Zweig mit demselben übergeordneten Element wie erstellenstiging
und den gesamten Zweigverlauf wie folgt dorthin verschieben:Dies setzt voraus, dass
stiging
nur ein Elternteil vorhanden ist. Natürlich können Sie stattdessen auch explizite Revisionsnummern verwenden.Anmerkung 1: Wenn Zweig
stiging
verschmilzt mit anderen Zweigen enthält, ich denke , dass dies sie erhalten wird, solangestaging
undstiging
haben die gleichen Eltern. Aber ich würde es auf jeden Fall noch einmal überprüfen.Hinweis 2: Da hierdurch der Verlauf bearbeitet wird, verschwindet der alte Zweig nicht einfach aus geklonten Repositorys (siehe
rebase
Dokumentation). Wenn nicht jeder neu klonen kann, ist dies möglicherweise keine sehr praktische Lösung für eine große Gruppe.Hinweis 3 / Bearbeiten (mit freundlicher Genehmigung von @JasonRCoombs): Jetzt, da Phasen in Quecksilber Standard sind,
rebase
wird es abgelehnt, bereits gepusste Änderungssätze zu ändern. Entweder täuschen Sie es, indem Sie die Phase wieder auf Entwurf (mithg phases
) ändern , oder lassen Sie den alten Zweig dort, wo er ist, und erstellen Sie einfach eine richtig benannte Kopie (z. B. mit `hg rebase --keep ').quelle
hg convert
stattdessen.--keep
Erzwingen Sie entweder, dass sie eingezogen werden (mit hg-Phasen), oder übergeben Sie sie an den Befehl rebase, der die Änderungen kopiert, anstatt sie zu verschieben.abort: can't rebase immutable changeset 11b1e2b7dc4f
. Beachten Sie, dass ich Änderungssätze aus einem anderen Zweig in diesen Zweig gepfropft habe. Außerdem ist es geteilt und kann kostenlos zusammengeführt werden..
für Ihren--dest
Wert verwenden, und die Basis übernimmt automatisch den neuen Zweignamen.Wenn Sie Änderungssätze haben, müssen Sie die Konvertierungserweiterung mit einer Verzweigungszuordnung verwenden, um sie umzubenennen. Jeder muss dann das neue Repo klonen oder den alten Zweig entfernen.
quelle
Erstellen Sie einen neuen Zweig namens "Staging" und vergessen Sie den anderen ...
quelle
Dies ändert den Verlauf und ist nur für fortgeschrittene Mercurial-Benutzer. Tun Sie dies nicht, wenn Sie nicht wissen, was das bedeutet.
Wenn Stiging nur lokal ist, können Sie es in Staging mit einer Kombination aus Transplantat und Streifen ändern . Beginnen Sie mit der Aktualisierung auf den Ahnen-Änderungssatz, bei dem das Stiggen auseinander gegangen ist. Erstellen Sie den Staging-Zweig und übertragen Sie jedes Commit von Stiging zu Staging. Staging sollte jetzt eine Kopie von Stiging sein. Zerstören Sie zum Schluss das Stiging, indem Sie das erste Commit entfernen.
quelle
hg graft {first changeset in stiging}..{stiging head}