2010-10-20 8 views
68

J'ai flippé une fusion. Je voudrais revenir, puis réessayer.
Existe-t-il un moyen de rétablir une fusion avant qu'elle ne soit validée?Comment annuler une fusion dans mercurial?

hg revert ne fait pas ce que je veux, il ne fait que rétablir le texte des fichiers. Mercurial abandonne ma deuxième tentative de fusion et se plaint de la fusion originale qui n'est toujours pas engagée.

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

+0

double possible de [Comment abandonner une fusion hg?] (Http://stackoverflow.com/questions/2570087/how-to-abandon-a-hg-merge) – Rodrigue

Répondre

86

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

+0

simple, efficace et, je pense, la meilleure façon de le faire! : D –

+37

Une autre façon est simplement 'hg update --clean .' –

+1

à ne pas confondre avec -c (minuscules)! – SystemParadox

35

Une fois que vous faites hg merge, mais avant hg commit, votre copie de travail a deux parents: le premier parent est le changeset vous avez mis à jour avant la fusion et le second parent est le changeset vous fusionnez avec. Mercurial ne vous laissera plus faire hg merge tant que votre copie de travail a deux parents.

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

  1. Si vous voulez annuler la fusion et de revenir à l'endroit où vous avez commencé, puis faire

    hg update -C . 
    

    Cela mettra à jour la copie de travail Pour correspondre au premier parent: le . indique toujours le premier parent de la copie de travail.

  2. Si vous voulez re-fusionner certains fichiers puis faire

    hg resolve fileA fileB 
    

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

Questions connexes