2011-12-19 18 views
7

Después de mi último commit, escribí un montón de código. Antes de volver a comprometerme, ejecuté hg add. Se añadieron algunos archivos que no estaba interesado, así que corrió¿Han desaparecido mis cambios después de "hg revertir"?

$ hg revert --all 

pensar que todos los archivos añadidos se irían. Desaparecieron, pero también revirtí todo el código escrito desde el último commit, ¡lo que significa que se perdió una tonelada de trabajo! ¿Cuáles son mis opciones?

Respuesta

12

Cuando hg revert un archivo (o archivos --all), Mercurial guarda una copia de seguridad del archivo con otro nombre. Esto es para que sea más difícil para ti perder el trabajo. Si el archivo se llamó foo, tendrá un foo.orig con la versión original.

Puede utilizar

$ hg status --all --include "**.orig" 

para ver todos los archivos .orig en su copia de trabajo. Mueve los que necesitas atrás, vuelve a agregarlos y confirma.

En una nota relacionada: la gente a veces se suman la bandera --no-backup a su sección [defaults] con el fin de deshacerse del .orig archivos de dispersión Mercurial alrededor. Creo que esto realmente una mala idea ... simplemente ignorar los archivos .orig no por la adición de

syntax: glob 
*.orig 

a su archivo .hgignore. Eso es mucho más seguro y un día estarás feliz de tener estos archivos .orig por ahí :-)

+3

gracias señor. oh y usted también Martin :-) – Rahul

+0

Cuando "mueve los que necesita volver, volver a agregarlos y confirmar" debe cambiar el nombre foo.txt.orig a foo.txt manualmente para cada archivo, o hay una manera mejor ? –

Cuestiones relacionadas