Accidentalmente, mediante el uso de una interfaz gráfica de usuario como contraposición a la CLI, he quitado todos los archivos en una Mercurial proyecto.

Me he recuperado con Volver aceptar y perdió algo de trabajo, que como tengo la máquina del tiempo, yo podría fácilmente llegar. Pero hay una manera de onu-quitar/recuperar esos archivos? Buceó en el manual y en google pero no veo nada. Cualquier plugins?

Soy probablemente respondiendo a mi propia pregunta aquí, pero los archivos se han ido desde el directorio y no en la basura para recuperarse, así que estoy asumiendo que Quitar es irrevocable?

p.s. Sé que hg forget o hg remove -Af va a quitar sin eliminar desde el directorio, pero mi pregunta tiene que ver con el error que cometí en contraposición a enfriar el pensamiento de la acción a través de.

  • usted debe ser capaz de comprar una versión anterior y estar bien (por supuesto, esto sólo funciona en caso de que no reescribir la historia)
  • el problema era que yo había cometido, hizo modificaciones, R(emoved). Así que después de que la secuencia sí, yo tenía el anterior cometer por lo regresó a que y como tengo copia de seguridad en la forma de la máquina del tiempo podría obtener los últimos cambios a partir de entonces agregar y, a continuación, confirmar. Sin embargo, si no hubiera tenido un backuop los cambios que se han perdido.
  • Relacionado con la pregunta que te permite buscar sólo los nombres de archivo (rápido): stackoverflow.com/questions/1013550/…
InformationsquelleAutor PurplePilot | 2010-02-01

9 Comentarios

  1. 148

    Primer lugar, el uso hg grep para encontrar el borrado del archivo que desea recuperar. La salida de este comando le mostrará la última revisión para que el archivo estaba presente, y la ruta de acceso del archivo eliminado.
    Segundo, ejecutar hg revert -r <revision number> <path to deleted file>
    El archivo eliminado estará ahora en su copia de trabajo, listos para ser enviados de vuelta en la cabeza.

    • trabajó muy bien para mí, gracias. estaba buscando la respuesta a «¿cómo puedo restablecer un archivo a propósito eliminado?»
    • exactamente lo que necesito, gracias.
    • muchas gracias,has salvado mi día
    • a partir de eclipse esto se puede hacer haciendo clic derecho en el archivo y Seleccione Equipo–>Volver
    • Otra manera de encontrar la revisión que contiene el archivo se hg log -I '**file.ext'
    • Sólo es para su INFORMACIÓN: si desea Que la revisión de número de la confirmación de que todavía tiene el archivo, NO el que quitó!

  2. 8

    Cita de comentario:

    He creado un repositorio, compromiso de todos, quitar y, a continuación, comprometido de nuevo

    Si este es el caso, entonces usted sólo tiene que actualizar el directorio de trabajo para la revisión anterior:

    $ hg update -C -r-2
    

    Nota de la negativa del número de revisión. Si los archivos eliminados no están en la revisión anterior, usted puede encontrarlos mediante:

    $ hg log -v
    
  3. 4

    De Mercurial 1.6 y por encima de

    Si usted sabe el nombre de la eliminación de archivos que usted puede encontrar su revisión fácilmente con:

    hg log -r "removes('NAME.c')"
    

    Esto le dará la revisión de la bruja en un fichero llamado NAME.c (en la raíz) se elimina.

    A continuación, se puede revertir el archivo a la revisión anterior (como otras respuestas):

    hg revert -r <revision number> <path to deleted file>
    

    Puede utilizar un patrón de nombre de archivo, en lugar de adaptarse a lo que usted sabe, por ejemplo, usted puede utilizar **/NAME.c para buscar en todos los directorios. Usted puede leer sobre él en Nombre De Archivo Patrones. Y utilice este enlace para saber acerca de la nueva revset especificaciones.

  4. 1

    Una adición a la aceptación de la respuesta – que es más rápido si desea deshacer todas las extracciones en un commit. He borrado una carpeta de gran tamaño con un par de cientos de archivos en ella y la hizo hg addremove, que no era en absoluto mi intención, así que tuvimos que deshacer todos los elimina.

    Utilizando Encontrar archivos borrados en el repositorio de Mercurial de la historia, de forma rápida? + xargs + tr, revertir toda revisión -3 retiros a la versión de la revisión -4:

    hg log -r -3 --template "{rev}: {file_dels}\n" | tr ' ' '\n' | xargs hg revert -r -4 
    

    Tenga en cuenta que esto se producirá si alguno de sus archivos de tener espacios en el nombre; http://hgbook.red-bean.com/read/customizing-the-output-of-mercurial.html no parecen tener ningún plantillas donde {file_dels} se divide por \n en el momento.

  5. 0

    Puede deshacer la última cometer en un repo con hg rollback. Sólo hay un nivel de reversión disponibles, así que si usted hizo el quite con más de un commit, no completamente deshacer el cambio. Esto sólo funciona en tu repositorio local, así que si usted ha empujado a usted no será capaz de deshacer en la repo remoto.

    • No, esto no funciona. Estoy usando un Mac con Mercurial Distribuido de SCM (versión 1.4.1+20091201). He creado un repositorio, compromiso de todos, quitar y, a continuación, comprometido de nuevo, pero esta sólo trae una lista de los archivos marcados como R(emoved), pero en realidad no traer de nuevo los archivos. Si me marca los archivos como R(emoved) y la Reversión antes de comprometerse no pasa nada tampoco.
    • Después de haber hecho el hg de la reversión, su repo se deshace, pero su directorio de trabajo actual todavía tiene sus cambios. Sólo decir hg para hacer una actualización limpia para el revierte revisión, ahora en la punta: hg hasta -C.
    • hg rollback no recuperar el archivo eliminado debido a la eliminación del archivo no es parte de la transacción de confirmación.
    • Eso es correcto. Si usted está mirando para conseguir en ediciones que no fueron cometidos antes de la eliminación, están perdidos.
  6. 0

    Puede quitar comprometido revisiones de uso de la hg strip de comandos, el cual es proporcionado por el mq (Mercurial Colas) de extensión. Esto debe darle la espalda a sus archivos.

    Hacer una copia de seguridad antes de intentar que fuera, porque se va a alterar Mercurial de la base de datos de los conjuntos de cambios.

  7. 0

    El siguiente método es sencillo y tan estúpido que no puede ir mal.
    Si ha eliminado o cambiado el nombre de varios archivos, todo va a estar bien.

    hg clone mydirectory mydirectory1
    

    y ahora empieza mc (o Far Manager) y comparar lo que fue y lo que se ha convertido.

    cuando se hace, simplemente elimine mydirectory1.

  8. 0

    Los siguientes trabajó para mí.

    hg revert -r <Revision Number> <File Name>
    

    (Opcional, para revertir todos los archivos)

    hg revert -r <Revision Number> --all
    

Dejar respuesta

Please enter your comment!
Please enter your name here