Je suis un utilisateur de Git essayant d’utiliser Mercurial.
Voici ce qui s’est passé: j’ai fait un hg backout
sur un hg backout
que je voulais rétablir. Cela a créé une nouvelle tête, alors hg m’a demandé de fusionner (retour à “default”, je suppose). Après la fusion, il m’a dit que je devais encore commettre. Puis j’ai remarqué quelque chose que j’ai mal fait en résolvant un conflit dans la fusion, et j’ai décidé que je voulais tout avoir comme avant la hg backout
, c’est-à-dire que cette fusion non validée devait disparaître. Sur Git, ces éléments non validés seraient dans l’index et je ferais juste un git reset --hard HEAD
pour l’effacer mais, d’après ce que j’ai lu, l’index n’existe pas sur Mercurial. Alors, comment puis-je sortir de ça?
Si vous ne vous êtes pas encore engagé et que vous avez l’impression que vous ne l’avez pas fait, vous pouvez annuler tout le travail de fusion avec hg update --clean
.
Cependant, dans la nouvelle version de mercurial, il existe une commande pratique pour fusionner un seul fichier: hg resolve path/to/file.ext
. De l’ hg help resolve
:
The available actions are: ... 4) discard your current attempt(s) at resolving conflicts and
redémarrer la fusion à partir de zéro: “hg resolve file …” (ou “-a” pour tous les fichiers non résolus)
Ceci est proche:
hg update --clean
De git, les commandes:
git reset --hard # reset to last commit git clean -df # delete untracked files
sont égaux à
hg update --clean # reset to last commit hg purge # delete untracked files
La page GitConcepts du manuel Hg explique comment effectuer de nombreuses actions que les utilisateurs git
connaissent bien dans Mercurial.
Mercurial ne possède pas de comportement git reset --hard
. Cependant, l’extension de ssortingp
fournit une commande de ssortingp
qui fait. Pour utiliser, commencez par activer ssortingp
dans votre fichier ~/.hgrc
::
[extensions] ssortingp =
Remarque: cette extension est nouvelle dans Mercurial-2.8. Les versions antérieures fournissaient la commande ssortingp
dans l’ extension mq
.
Vous pouvez maintenant exécuter des commandes telles que hg ssortingp
ou même hg help ssortingp
. Pour supprimer un ensemble de modifications et tous ses enfants, spécifiez simplement cet ensemble de modifications sous forme d’argument de hg ssortingp
. Par exemple, pour supprimer la dernière validation que vous venez d’effectuer (après avoir utilisé des commandes ayant provoqué la hg rollback
pour signaler qu’il n’y a plus de transaction à annuler), vous pouvez supprimer la révision d’ tip
. Chaque fois que vous exécutez cette commande, une autre révision sera supprimée. les actions de hg ssortingp
doivent être considérées comme irréversibles; Les utilisateurs peu familiers doivent faire des sauvegardes de leurs référentiels avant de les utiliser.
$ hg ssortingp tip
Par exemple, avec la syntaxe de revsets , j’indique que je veux supprimer tous les commits de ma part qui entraînent l’affichage de têtes supplémentaires lorsque hg heads
. Si vous spécifiez une révision particulière dans l’expression ci-dessous autre que tip
, tout ce qui n’est pas un ancêtre de la révision choisie dans la twig en cours sera réduit. Cela semble le plus proche du comportement que je veux quand je git reset --hard HEAD
la commande git reset --hard HEAD
.
$ hg ssortingp "branch(tip) and not(ancestors(tip)::tip)"