control and version-control mercurial

version control - and - Diferencia entre Revertir y Actualizar en Mercurial



difference between git and mercurial (1)

Estoy empezando con Mercurial, y me he encontrado con algo que no entiendo.

Realicé cambios en varios archivos, y ahora quiero deshacer todos los cambios que hice en uno de ellos (es decir, volver a mi última confirmación para un archivo específico).

Por lo que puedo ver, el comando que quiero es revertir .

En la página a la que me he vinculado, está la siguiente declaración:

Sin embargo, esta operación no cambia la revisión principal del directorio de trabajo (o revisiones en el caso de una combinación no comprometida). Para deshacer una fusión sin procesar, puede usar "hg update -C -r". que restablecerá a los padres al primer padre.

No entiendo la diferencia entre los dos ( hg revert vs. hg update -C -r ). ¿Alguien puede iluminarme en cuanto a la diferencia? Y en mi caso, ¿realmente quiero que la reversión o la actualización eliminen los cambios que hice en el archivo?

Gracias


La primera diferencia es que revertir puede funcionar en un subconjunto de la copia de trabajo mientras la actualización funciona en toda la copia de trabajo. la otra diferencia está en lo que sucede cuando quieres volver a una versión que no sea la última comprometida.

si tenemos revisiones (los límites están comprometidos, minúsculas son cambios en la copia de trabajo, la revisión de los padres es C)

A-B-C-d

update -C -r B te dará

A-B-C

con su copia de trabajo establecida en B, cualquier cambio dará como resultado una bifurcación desde B (revisión principal establecida en B)

A-B-C /e

revert -r B te dará

A-B-C-b''

donde b ''es un conjunto de cambios que deshace todo en los cambios comprometidos intermedios, en este caso deshace C. todos los cambios ahora solo se unen al conjunto b'' (la revisión padre se deja sin cambios en C)