Antworten:
Aktualisieren Sie den stigingZweig 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 v3Aktualisierung auf den neuen v3Zweig, wie Sie es wollten.
stigingvor dem Verzweigen schließen, erhalten Sie kein "loses Ende"
Für zukünftige Leser: Mit der rebaseErweiterung können Sie einen neuen Zweig mit demselben übergeordneten Element wie erstellen stigingund 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 stigingnur ein Elternteil vorhanden ist. Natürlich können Sie stattdessen auch explizite Revisionsnummern verwenden.
Anmerkung 1: Wenn Zweig stigingverschmilzt mit anderen Zweigen enthält, ich denke , dass dies sie erhalten wird, solange stagingund stiginghaben 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 rebaseDokumentation). 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, rebasewird 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 convertstattdessen.
--keepErzwingen 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 --destWert 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}