precio - Mercurial: ¿cómo descartar todos los cambios locales, incluidos los archivos no versionados?
mercurial significado (5)
Estoy moviendo un proceso de compilación para usar mercurial y quiero volver a poner el directorio de trabajo en el estado de la revisión de la sugerencia. Las ejecuciones anteriores del proceso de compilación habrán modificado algunos archivos y agregado algunos archivos que no deseo confirmar, por lo que tengo cambios locales y archivos que no se agregan al repositorio.
¿Cuál es la forma más fácil de descartar todo eso y obtener un directorio de trabajo limpio que tenga la última revisión?
Actualmente estoy haciendo esto:
hg revert --all
<build command here to delete the contents of the working directory, except the .hg folder.>
hg pull
hg update -r MY_BRANCH
pero parece que debería haber una manera más simple.
Quiero hacer el equivalente a eliminar el repositorio, hacer un clon nuevo y una actualización. Pero el repositorio es demasiado grande para que sea lo suficientemente rápido.
Esos pasos deberían poder acortarse a:
hg pull
hg update -r MY_BRANCH -C
La bandera -C
le dice al comando de actualización que descarte todos los cambios locales antes de actualizar.
Sin embargo, esto aún puede dejar archivos sin seguimiento en su repositorio. Parece que también quieres deshacerte de ellos, así que usaría la extensión de purge
para eso:
hg pull
hg update -r MY_BRANCH -C
hg purge
En cualquier caso, no hay un solo comando que pueda pedirle a Mercurial que haga todo lo que quiera aquí, excepto si cambia el proceso a ese método de "clonación completa" que diga que no puede hacer.
Para borrar untracked en * nix sin la extensión de purga, puede usar
hg pull
hg update -r MY_BRANCH -C
hg status -un|xargs rm
Que está usando
actualización -r --rev REV revisión
update -C --clean descartar cambios no confirmados (sin copia de seguridad)
status -u --unknown muestra solo archivos desconocidos (no seguidos)
status -n --no-status Ocultar prefijo de estado
Si está buscando un método que sea fácil , entonces puede intentar esto.
Por mi parte, apenas puedo recordar las líneas de comando para todas mis herramientas, por lo que tiendo a hacerlo usando la IU:
1. Primero, selecciona "confirmar"
2. Luego, visualice los archivos ignorados. Si tiene cambios no confirmados, escóndalos.
3. Ahora, seleccione todos y haga clic en "Eliminar sin versionar".
Hecho. Es un procedimiento que es mucho más fácil de recordar que las cosas de línea de comandos.
El estado de hg le mostrará todos los archivos nuevos, y luego puede simplemente registrarlos .
Normalmente quiero deshacerme de los archivos ignorados y no versionados, así que:
hg status -iu # to show
hg status -iun0 | xargs -r0 rm # to destroy
Y luego sigue eso con:
hg update -C -r xxxxx
que pone todos los archivos versionados en el estado correcto para la revisión xxxx
Para seguir la tradición de de decirte que no quieres hacer esto, a menudo encuentro que esta "Opción Nuclear" ha destruido cosas que me importan.
La forma correcta de hacerlo es tener una opción ''make clean'' en su proceso de compilación, y tal vez un ''make reallyclean'' y ''make distclean'' también.
hg up -C
Esto eliminará todos los cambios y se actualizará a la última cabeza en la rama actual.
Y puede activar la extensión de purga para poder eliminar también todos los archivos no versionados.