mercurial repository tutorial
Mercurial(hg) equivalente de git reset(--mixed o--soft) (1)
La forma correcta de replicar el git reset --soft HEAD^
(deshacer la confirmación actual pero mantener los cambios en la copia de trabajo) es:
hg strip --keep -r .
-1
solo funcionará si la confirmación que desea eliminar es la última confirmación que ingresó al repositorio. .
se refiere a la confirmación actualmente desprotegida, que es el equivalente más cercano que tiene Mercurial al HEAD
de Git.
Tenga en cuenta que si .
tiene descendientes, esos serán despojados también. Si desea mantener la confirmación, una vez que tenga la ID de confirmación, puede:
hg update .^
hg revert --all -r <commit id>
Esto se actualizará al padre del compromiso y luego reemplazará los archivos en la copia de trabajo con las versiones en ese compromiso.
lo que sería un comando mercurial equivalente (o flujo de trabajo) para
git reset --mixed HEAD^
o
git reset --soft HEAD^
es decir, quiero dejar intacto el árbol de trabajo pero llevar el repositorio al estado en que se encontraba antes de la última confirmación. Sorprendentemente, no encontré nada útil en stackoverflow o con google.
Tenga en cuenta que no puedo usar
hg rollback
como he hecho algo de reescritura de historial usando HistEdit después de la última confirmación.
Agregado para aclarar: Después de algunas modificaciones y edición de historial, terminé con A <- B <- C. Luego utilicé HistEdit para aplastar B y C juntos, obteniendo A <- C ''. Ahora quiero dividir la confirmación C ''(he cometido los archivos incorrectos en B). Pensé que la manera más fácil de hacer esto era volver a poner el repositorio en el estado A (que técnicamente nunca existió en el repositorio debido a todo el rebasing y la edición histórica anterior) y el árbol de trabajo al estado de C ''y luego hacer dos comete