2010-07-09 19 views
53

Al usar Mercurial, ¿cómo deshacer todos los cambios en el directorio de trabajo desde la última confirmación? Parece que esto sería algo simple, pero me está escapando.Mercurial: ¿Cómo se pueden deshacer los cambios?

Por ejemplo, supongamos que tengo 4 confirmaciones. Luego, realizo algunos cambios en mi código. Luego decido que mis cambios son malos y solo quiero volver al estado del código en mi última confirmación. Entonces, creo que debería hacer:

hg update 4 

con 4 siendo la revisión # de mi última confirmación. Pero, Mercurial no cambia ninguno de los archivos en mi directorio de trabajo. Por qué no?

Respuesta

80

hg revert hará el truco.

Te devolverá al último compromiso.

--all revertirá todos los archivos.

Vea el enlace para la descripción de Man Page de la misma.

hg update se utiliza generalmente para actualizar su directorio de trabajo después de extraer de un repositorio o intercambiar sucursales diferentes. hg up myawesomebranch. También se puede usar para volver a una versión específica. hg up -r 12.

+0

Cuando hice esto, puedo ver archivos .orig para cada archivo que he revertido cuando verifico el estado de hg. Como lidiar con esto ? –

6

hg revert es su amigo:

hg revert --all 

hg update fusiona los cambios a su copia de trabajo actual con el objetivo de la revisión. Fusionar la última revisión con sus archivos modificados (= copia de trabajo actual) da como resultado los mismos cambios que ya tiene, es decir, no hace nada :-)

Si desea leer en Mercurial, le recomiendo tutorial muy impresionante Hg Init.

+0

pableu: estás en lo cierto acerca de cómo actualización 'hg 'funciona cuando tiene cambios en su copia de trabajo: los combina en la revisión de destino. Cuando ya estás en esa revisión objetivo, no pasa nada. Edité la respuesta para decir esto de una manera más segura. –

16

Una solución alternativa a hg revert es hg update -C. Puede descartar sus cambios locales y actualizar a alguna revisión con este único comando.

por lo general prefiero escribir hg up -C porque es más corto que hg revert --all --no-backup :)

1
hg revert --all 

y luego

hg pull -u 

funciona para mí

Cuestiones relacionadas