tutorial mercurial

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