2012-03-08 5 views
22

Tengo situación como esta:Cómo uncommit en mercurial para mi última confirmación (todavía no empujado)

he cometido presenta una, b, c, i d.Now encontró que por error i comprometí archivos a y b; entonces, antes de presionar estos cambios, quiero hacer que los archivos a y b no se compliquen para que solo pueda presionar c y d. ¿Puede alguien decirme cómo para hacer eso usando comandos mercuriales?

Aquí uncommit significa que yo quiero usar Dunt "Hg a cabo -p" y después de eso buscando el cambio establecido y hacer las cosas de forma manual.

+0

Al comparar esto y la pregunta marcada como duplicada, está claro que esta es una situación diferente con una respuesta diferente. En lugar de buscar eliminar un conjunto de cambios, queremos convertirlo a un conjunto de cambios de archivos no comprometidos con la intención de crear un nuevo conjunto de cambios alterado. – AWrightIV

Respuesta

37

Suponiendo que no hay ninguna cualesquiera otras transacciones en su repositorio desde que cometió los archivos, creo que se podría hacer esto como un proceso de 2 etapas:

hg rollback 
hg commit filec filed 

hg rollback debe quitar la confirmación de que tiene solo hecho, pero deje los archivos como cambiados. Entonces hg commit filec filed debe confirmar los archivos llamados filec & filed. Obviamente, debe reemplazar estos nombres de archivo con los nombres de sus archivos reales.

Probablemente valga la pena mencionar que debe tener cuidado con hg rollback - altera el historial, por lo que es posible perder datos si se usa incorrectamente.

+6

rollback está en desuso y marcado como peligroso. Una forma simple de 'no comprometer' su último compromiso es usar hg strip -r -1 -k. – phb

+4

Dado que la gente me dio un -1 por ese comentario. Aquí está la documentación que respalda mi reclamo: https://www.mercurial-scm.org/repo/hg/help/rollback – phb

+1

En caso de que el enlace se rompa, la documentación mencionada por @phb indica: _ [hg rollback] (https://www.mercurial-scm.org/repo/hg/help/rollback) Deshacer la última transacción (PELIGROSO) (DEPRECATED) Utilice 'hg commit --amend' en lugar de revertir para corregir errores en el último commit ._ Importante, 'hg commit --amend' es la alternativa recomendada! – AWrightIV

3

En mercurial puede utilizar el comando de reversión, que crea un conjunto de cambios que es el opuesto del conjunto de cambios que desea echado atrás. Entonces este conjunto de cambios está comprometido. Lo único que debes hacer después de eso es una fusión.

Puede anular cualquier cambio, pero no se recomienda anular un conjunto de cambios de fusión.

Se puede encontrar una explicación detallada del comando con un ejemplo here.

+0

Esto es realmente útil para esos momentos en los que la reversión no funcionará porque '' '--men''''esto es la confirmación. –

Cuestiones relacionadas