2011-05-31 13 views
8

Mecanografié¿Deshacer el último addremove en Mercurial?

$ hg addremove 

pero más tarde se dieron cuenta de que algunos de los archivos no deben ser parte de la confirmación. Lo que debería haber hecho fue agregar estos archivos a .hgignore y luego ejecutar addremove y commit.

¿Hay alguna manera de arreglar esto?

Respuesta

15

Si aún no se ha comprometido, simplemente use hg forget fileToForget o use Tortoise para eliminar los archivos.

Si se ha comprometido y no le molesta que los archivos formen parte del historial, simplemente olvídelos y vuelva a cometerlos.

Si no desea que formen parte de su historial de repositorio, y si comprometerlos es la última operación que ha realizado, puede intentar deshacer (use hg rollback o vaya al menú de recuperación en Tortoise) . Tendrá que olvidar el archivo y luego volver a confirmar

Si está tratando con demasiados archivos, puede tratar de automatizar la tarea obteniendo una lista de todos los archivos agregados, olvidándolos, modifíquelo .hgignore y haga lo addremove nuevamente.

Ejemplo del primer paso en PowerShell con ningún commit hizo

hg status --added --no-status | foreach-object {hg forget $_}; 
+7

Para el tipo Linux 'hg status - agregado --no-estado | xargs hg forget'. –

+0

Pruebe esto desde otra respuesta 'hg forget" set: added() "' que funcionó para mí. –

+0

@DanielSokolowski Eso no funciona si hay espacios en los nombres de archivo - use 'hg status --added --no-status | xargs -d '\ n' hg forget' en su lugar. – Eborbob

0

Para deshacer una addremove que no ha cometido aún sólo tiene que ejecutar:

$ hg revert --all 
+2

Suponiendo que no haya otros cambios además de los efectos del 'addremove'. – Edward

+0

Tiene razón, supuse que 'addremove' era el único comando que desea deshacer. – Alex

+2

@Alex Esto puede ser peligroso como se menciona en @Edward. Alguien que use este comando perderá todos los cambios del espacio de trabajo. 'hg forget' es la forma correcta de hacer esto. Por favor, vea la respuesta de @CedricRup – Medorator