Respuestas:
Actualice la stiging
rama y cree una nueva rama a partir de ella. Luego cierra la rama vieja.
En resumen:
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
. Por ejemplo: hg branch --force v3
. Esto dará como resultado la hg update v3
actualización a la nueva v3
sucursal, como lo deseaba.
stiging
antes de bifurcarse, no obtendrá un "extremo suelto"
Para futuros lectores: con la rebase
extensión, puede crear una nueva sucursal con el mismo padre stiging
y mover todo el historial de la sucursal, de esta manera:
hg update -r "parents(min(branch('stiging')))"
hg branch staging
hg commit
hg rebase --source "min(branch('stiging'))" --dest staging
Esto supone que stiging
solo tiene un padre. Por supuesto, puede usar números de revisión explícitos en su lugar.
Nota 1: Si la rama stiging
incluye fusiones con otras ramas, creo que esto las preservará, siempre staging
y cuando stiging
tengan el mismo padre. Pero ciertamente lo verificaría dos veces.
Nota 2: dado que esto edita el historial, la rama anterior no desaparecerá simplemente de los repositorios clonados (consulte la rebase
documentación). A menos que todos puedan clonar de nuevo, puede que no sea una solución muy práctica para un grupo grande.
Nota 3 / Editar (cortesía de @JasonRCoombs): ahora que las fases son estándar en mercurial, rebase
se negará a modificar los conjuntos de cambios que ya se han enviado. Puede engañarlo cambiando la fase de nuevo a borrador (con hg phases
), o dejar que la rama anterior permanezca donde está, y simplemente hacer una copia con el nombre correcto (por ejemplo, con `hg rebase --keep ').
hg convert
en su lugar.
--keep
al comando rebase, que copiará en lugar de mover los cambios.
abort: can't rebase immutable changeset 11b1e2b7dc4f
. Tenga en cuenta que he injertado los conjuntos de cambios de otra rama en esta. Además de eso, se divide y se fusiona gratis.
.
para su --dest
valor, y la nueva toma tomará el nuevo nombre de la rama automáticamente.
Si tiene conjuntos de cambios, deberá usar la extensión de conversión con un mapa de rama para cambiarle el nombre. Todos tendrán que clonar el nuevo repositorio o quitar la rama vieja.
Esto modifica el historial y es solo para usuarios avanzados de Mercurial. No hagas esto si no sabes lo que eso significa.
Si el estigma es solo local, puede cambiarlo a una puesta en escena con una combinación de injerto y tira . Comience actualizando el conjunto de cambios ancestro donde el estigma había divergido. Cree la rama de preparación e injerte cada confirmación desde el estigma hasta la puesta en escena. La puesta en escena ahora debería ser una copia del estigma. Por último, destruya el estigma eliminando su primer compromiso.
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}