Necesitará la extensión Mq. Si no lo tiene activado, hágalo agregando esto a su archivo Mercurial.ini
o .hgrc
.
[extensions]
hgext.mq=
Si no está familiarizado con él, la historia se manipula el Mq extension de let. La buena noticia es que esto nos permitirá arreglar su repositorio. La mala noticia es que cualquiera que tenga un clon del informe defectuoso tendrá que volver a clonarlo, porque cambiaremos la historia.
Primero, vaya a hacer otro clon de su repositorio para trabajar, para no ensuciar nada.
Ahora, busque la id de revisión del conjunto de cambios de combinación (que fusionó default
y su rama con nombre). Escríbelo. Nos referiremos a él como changesetM
. Ahora encuentra la id de revisión del próximo conjunto de cambios. Escríbelo. Nos referiremos a él como changesetN
.
Una vez que tenga estos dos identificadores de revisión, diríjase a su línea de comandos y cd
en su repositorio. A continuación, escriba el siguiente, en sustitución de changeset[M|N]
con el identificador de revisión adecuada .:
$ hg qimport -r changesetN:tip
# This will add all of your changes since the merge to the queue
$ hg qpop -a
# This pops them all out of your history.
$ hg strip changesetM
# This removes the merge changeset.
$ hg update -C default
# Make sure we're on the default branch
$ hg qpush -a
# Take the changesets in the queue and push them back onto your history.
$ hg qfinish -a
# Remove changesets from the queue and finalize them as normal changesets.
Esencialmente, usted está rebasado los nuevos conjuntos de cambios en la parte superior de la rama por defecto, retirar el conjunto de cambios de combinación en el proceso. Una vez que haya terminado, deberá enviar los cambios a un nuevo repositorio en el servidor y hacer que sus colegas clonen copias recientes.
Por último, si tiene alguna otra pregunta sobre Mercurial, también consulte kiln.stackexchange.com.
ACTUALIZACIÓN
me olvidó mencionar: Si alguien se ha basado en los cambios en algo que era sólo en la otra rama, es posible que hg qpush -a
se producirá un error. Verá un archivo foo.txt.rej
y foo.txt.orig
por ahí. Lamentablemente, tendrás que arreglarlo tú mismo. Para solucionarlo, abra el archivo original, el archivo .orig
y el archivo .rej
y elija los cambios correctos para fusionarlos, guardándolos en el archivo original. Una vez que lo haya combinado, use hg qrefresh
para actualizar ese parche en el nuevo parche combinado. De ellos, debería poder ejecutar hg qpush -a
nuevamente y continuar. Si vuelve a encontrarse con el mismo error en otro parche, simplemente siga el mismo proceso.
Esto funciona ... ¡gracias! Ahora tengo un problema restante: ¿cómo obtener los conjuntos de cambios aplicados después de la combinación incorrecta en mi repositorio recién clonado? –
@Steve Vea mi respuesta. Tendrás que "volver a establecer la base" en la cabeza anterior. – tghw
retroceso no se puede deshacer una fusión. – tghw