Antworten:
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 einer hg update v3
Aktualisierung auf den neuen v3
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 erstellen stiging
und den gesamten Zweigverlauf wie folgt dorthin verschieben:
hg update -r "parents(min(branch('stiging')))"
hg branch staging
hg commit
hg rebase --source "min(branch('stiging'))" --dest staging
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, solange staging
und stiging
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 (mit hg 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 ').
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.
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.
hg update {SHA-1 of the ancestor changeset}
hg branch staging
hg graft {first changeset in stiging} ... {stiging head-1} {stiging head}
hg strip {first changeset in stiging}
hg push --new-branch
hg graft {first changeset in stiging}..{stiging head}