version control - significado - Cómo deshacer "abortar: empujar crea nuevas cabezas remotas en la rama" en mercurial
mercurial vs git (3)
Soy consciente de Mercurial para principiantes: ¿La guía práctica definitiva y respuestas como las ramas de fusión de Mercurial? (abortar: push crea nuevas ramas remotas)
Aquí, involuntariamente, he creado una situación en la que Mercurial desea crear un nuevo cabezal remoto. ¿Cuál es la mejor manera de deshacer esto y dejar poco o ningún rastro de este error en el lado remoto?
###> hg push
pushing to http://example.com
searching for changes
abort: push creates new remote heads on branch ''default''!
(did you forget to merge? use push -f to force)
###> hg revert --all -r tip
###> hg update -C
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
###> hg incoming
comparing with http://example.com
searching for changes
no changes found
###> hg summary
parent: 488:e3db024fe901 tip
Misc.
branch: default
commit: (clean)
update: 6 new changesets, 2 branch heads (merge)
###> hg pull
pulling from http://example.com
searching for changes
no changes found
###> hg glog
@ changeset: 488:e3db024fe901
| tag: tip
| summary: Misc.
|
o changeset: 487:b207579b9d41
| parent: 480:ce775708800c
| summary: Misc.
|
| o changeset: 486:59a7a5b34c7f
| | user: other
| | summary: fixes
| |
| o changeset: 485:b28264333e18
| | user: other
| | summary: binary
Si me fusiono, me parece bien:
hg merge
abort: outstanding uncommitted merges
Pero hg diff
muestra todo tipo de cambios que no hice. Estoy dispuesto a volver a aplicar mis cambios ... ¿cómo puedo devolver todo esto a un solo consejo, abandonando todos los cambios locales?
No me fusioné, pero de repente estoy viendo el mensaje que ha publicado la operación. Cuando hago un hg pull , en la línea de comandos se muestra abort! Repositorio predeterminado no encontrado .
Para deshacerse de los cambios (ex 487 y 488): si cree que (como yo) que se está volviendo a clonar el repositorio, como se recomienda anteriormente e incluso oficialmente recomendado aquí es ridículo, debería obtener MqExtension
Una vez que Mq está habilitado, puede eliminar fácilmente los cambios que no desee:
hg strip 487
hg strip 488
Parece que cuando has hecho una hg merge
, no has confirmado el conjunto de cambios resultante.
Cuando se fusiona en otra rama (en su caso, es posible que deba especificar hg merge 486
para fusionar en los cambios de otros usuarios), se fusiona esa rama en su directorio de trabajo. A continuación, debe verificar que todos los conflictos se resuelvan (si existen) utilizando una herramienta de combinación, o editando manualmente los archivos (y luego ejecutando hg resolve
cualquier conflicto). Una vez hecho esto, debe hg commit
su nuevo conjunto de cambios fusionado.
Esto explicaría por qué hg diff
le da muchos cambios que no hizo, son cambios realizados en la otra rama, que aún no ha realizado. Si ejecuta hg summary
o hg parents
en su directorio de trabajo, debería ver dos padres en la lista: 486
y 488
. Debería hg commit
este directorio de trabajo, creando un nuevo 489
fusionado.
Si desea deshacer la combinación actual y comenzar de nuevo, tiene razón al intentar ejecutar hg update -C
, lo que restablecerá su directorio de trabajo a su estado original (sin combinar).
Si desea deshacerse de sus cambios ( 487
y 488
- 488
que no le importa volver a aplicarlos), la opción más sencilla sin tener que recurrir a extensiones es simplemente volver a clonar el repositorio y continuar su trabajo desde allí.