significado nike english mercurial

nike - ¿Cómo puedo recuperar un archivo eliminado en Mercurial(si es que lo hay)?



mercurial svn (9)

Bueno, esto funcionó para mí.

hg revert -r revision pathToTheFile

Accidentalmente, al usar una GUI en lugar de CLI, eliminé todos los archivos en un proyecto de Mercurial.

Me recuperé con Revertir bien y perdí algo de trabajo, que como tengo máquina de tiempo, podría volver fácilmente. Pero, ¿hay alguna forma de deshacer / eliminar esos archivos? Arrastre el manual y busque en Google pero no puede ver nada. Cualquier complemento?

Probablemente estoy respondiendo mi propia pregunta aquí, pero los archivos ya no estaban en el directorio y no estaban en la papelera para recuperarlos, así que supongo que Eliminar es irrevocable.

ps Sé que hg forget o hg remove -Af lo eliminará sin eliminarlo del directorio, pero mi pregunta tiene que ver con el error que hg remove -Af la acción.


Cita del comentario:

Configuré un repositorio, comprometí todo, quité y luego volví a comprometerme

Si este es el caso, solo necesita actualizar el directorio de trabajo a la revisión anterior:

$ hg update -C -r-2

Tenga en cuenta el número de revisión negativo. Si los archivos que eliminó no están en la revisión anterior, puede encontrarlos usando:

$ hg log -v


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

hg clone mydirectory mydirectory1

y ahora comienzas mc (o Far Manager) y comparas lo que era vs lo que se ha convertido.

cuando haya terminado, simplemente elimine mydirectory1 .


Lo siguiente funcionó para mí.

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

(Opcional, para revertir todos los archivos)

hg revert -r <Revision Number> --all


Primero, use hg grep para encontrar el archivo eliminado que desea recuperar. La salida de este comando le mostrará la última revisión para la cual el archivo estuvo presente, y la ruta al archivo eliminado. En segundo lugar, ejecute hg revert -r <revision number> <path to deleted file> El archivo eliminado ahora estará en su copia de trabajo, listo para volver a comprometerse en la cabecera.


Puede deshacer el último commit en un repositorio con hg rollback . Solo hay un nivel de reversión disponible, por lo que si eliminó con más de una confirmación, esto no deshará por completo su cambio. Esto solo funciona en su repositorio local, de modo que si lo ha empujado, no podrá deshacerlo en el repositorio remoto.


Puede eliminar las revisiones confirmadas mediante el comando hg strip , proporcionado por la extensión mq (Mercurial Queues). Esto debería devolverte tus archivos.

Realice una copia de seguridad antes de probarlo, ya que alterará la base de datos de conjuntos de cambios de Mercurial.


Una adición a la respuesta aceptada: esto es más rápido si desea deshacer todas las eliminaciones en una confirmación. Eliminé una carpeta grande con unos cientos de archivos y hg addremove , que no era mi intención, así que tuve que deshacer todas esas eliminaciones.

¿ Utilizas rápidamente los archivos eliminados en el historial de repositorios de Mercurial? + xargs + tr, revertir todas las eliminaciones de revisión -3 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 fallará si alguno de sus archivos tiene espacios en el nombre; http://hgbook.red-bean.com/read/customizing-the-output-of-mercurial.html no parece tener ninguna plantilla donde {file_dels} esté dividido por /n en este momento.


Para Mercurial 1.6 y superior

Si conoce el nombre del archivo de eliminación, puede encontrar su revisión fácilmente con:

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

Esto le dará la revisión en la que se borra un archivo llamado NAME.c (en la raíz).

Luego puede revertir el archivo a la revisión anterior con (como otras respuestas):

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

Puede usar un patrón de nombre de archivo para adaptarse a lo que sabe, por ejemplo, puede usar **/NAME.c para buscar en todos los directorios. Puede leer sobre esto en File Name Patters . Y use este enlace para conocer las nuevas especificaciones de revset .