¿Cómo se elimina un commit en Mercurial?
mercurial repository (8)
Quiero eliminar completamente un compromiso de Mercurial como si nunca se hubiera introducido en el repositorio y volver a mi compromiso anterior.
es posible?
Encuentro esto bastante a menudo. Hago un commit y luego jalo para empujar. Pero luego hay algo entrante que hace que mi compromiso recién hecho sea innecesario. Una simple hg rollback
no es suficiente porque solo deshace el tirón ...
Esto es lo que hay que hacer:
hg strip <rev>
Las cosas son indoloras cuando no presionas tus conjuntos de cambios en ninguna parte.
Para editar el historial usaría la extensión Histedit .
hg histedit 45:c3a3a271d11c
Sin embargo, tenga en cuenta que esto solo tiene sentido en una situación en la que aún no haya enviado los confirmaciones al repositorio público, es propietario del repositorio público y / o puede dar cuenta de todos los clones disponibles. Si recibe el siguiente error:
abort: can''t rebase immutable changeset 43ab8134e7af
Significa que Mecurial piensa que este es un conjunto de cambios público (ver phases ) que ya se ha enviado. Puedes forzarlo a ser un draft
nuevamente haciendo:
hg phase -f -d 45:c3a3a271d11c
Puede intentar eliminar mq información sobre su compromiso.
- Para esto necesitas ir Archivo-> Configuraciones-> Extensiones.
- Allí compruebe mq y reinicie gui.
- Después de eso, simplemente haga clic con el botón derecho en la confirmación innecesaria y ModificarHistoria-> Eliminar
Puede usar "hg backout" para hacer una fusión inversa básicamente. Todas las opciones se discuten en el libro de libre acceso "Mercurial: The Definitive Guide":
http://hgbook.red-bean.com/read/finding-and-fixing-mistakes.html
Sí. A menos que esté equivocado, a partir de v2.3 (rel. 2012/08/01) puede usar la extensión HisteditExtension con un comando drop para soltar un commit, junto con strip
o backout
para eliminar cambios.
Una simple búsqueda en Google sobre la función: https://www.google.com/webhp#q=histedit+drop
Si es más de un compromiso y / o ya lo ha insertado en otra parte, puede clonar su repositorio y especificar el último conjunto de cambios que se debe clonar.
Vea mi respuesta aquí cómo hacer esto:
Mercurial: Arregla una historia borked.
Si solo cometió un compromiso local y no presionó, puede crear un clon localmente (como se describe en mi enlace) y listo.
Si ya presionó a algún repositorio remoto, tendría que reemplazarlo con su clon.
Por supuesto, depende de si puedes (o estás permitido) hacer esto.
Si usas tortuga puedes usar modificar historial> tira ...
Si fue su último compromiso y no lo ha empujado a ninguna parte, puede hacerlo con la rollback
. De otra manera no. Realmente no. Es hora de cambiar tus contraseñas.
Edición: se ha señalado que puede clonar una revisión anterior y combinar los cambios que desea mantener. Eso también es cierto, a menos que lo hayas enviado a un repositorio que no controlas. Una vez que empuja, es muy probable que sus datos sean muy difíciles de recuperar.