web-dev-qa-db-fra.com

Comment abandonner une fusion en mercurial?

J'ai raté une fusion. Je voudrais revenir en arrière puis réessayer.
Existe-t-il un moyen d'annuler une fusion avant qu'elle ne soit validée?

hg revert ne fait pas ce que j'aimerais, il ne fait que restaurer le texte des fichiers. Mercurial abandonne ma deuxième tentative de fusion et se plaint que la fusion d'origine n'est toujours pas engagée.

Existe-t-il un moyen d'annuler une fusion après un hg merge commande mais avant qu'elle ne soit validée?

79
deft_code

hg update -C <one of the two merge changesets>

100
Omnifarious

Après avoir fait hg merge, mais avant hg commit, votre copie de travail a deux parents: le premier parent est l'ensemble de modifications que vous aviez mis à jour avant la fusion et le deuxième parent est l'ensemble de modifications avec lequel vous fusionnez. Mercurial ne vous laissera pas faire hg merge encore une fois tant que votre copie de travail a deux parents.

Vous avez deux options sur la façon de procéder:

  1. Si vous souhaitez annuler la fusion et revenir à votre point de départ, faites

    hg update -C .
    

    Cela mettra à jour la copie de travail pour correspondre au premier parent: le . désigne toujours le premier parent de la copie de travail.

  2. Si vous voulez re-fusionner certains fichiers alors faites

    hg resolve fileA fileB
    

    Cela relancera les outils de fusion comme lorsque vous l'avez fait hg merge. La commande de résolution est bonne si vous découvrez à hg merge- fois que vos outils de fusion sont mal configurés: corrigez la configuration et exécutez hg resolve --all. Tu peux courir hg resolve autant de fois que vous le souhaitez jusqu'à ce que vous soyez satisfait de la fusion.

38
Martin Geisler