Différence entre Revert et Update dans Mercurial

Je commence juste avec Mercurial, et j’ai rencontré quelque chose que je ne comprends pas.

J’ai apporté des modifications à plusieurs fichiers, et maintenant je veux annuler toutes les modifications que j’ai apscopes à l’un d’entre eux (c’est-à-dire revenir à mon dernier commit pour un fichier spécifique).

Autant que je sache, la commande que je veux est inversée .

Dans la page à laquelle je suis lié, il y a la déclaration suivante:

Cette opération ne modifie toutefois pas la révision parent du répertoire de travail (ou les révisions en cas de fusion non validée). Pour annuler une fusion non engagée, vous pouvez utiliser “hg update -C -r.” ce qui réinitialisera les parents au premier parent.

Je ne comprends pas la différence entre les deux ( hg revert vs hg update -C -r ). Quelqu’un peut-il m’éclairer sur la différence? Et dans mon cas, est-ce que je veux vraiment que le retour ou la mise à jour se débarrasse des modifications apscopes au fichier?

La première différence est que revenir peut fonctionner sur un sous-ensemble de la copie de travail alors que la mise à jour fonctionne sur la copie de travail entière. L’autre différence réside dans ce qui se passe lorsque vous souhaitez revenir à une version autre que la dernière validée.

si nous avons des révisions (les majuscules sont validées, les minuscules sont les modifications de la copie de travail, la révision parent est C)

 ABCd 

update -C -r B vous donnera

 ABC 

Avec votre copie de travail définie sur B, toute modification entraînera une dérivation à partir de B (révision parent définie sur B)

 ABC \e 

revert -r B vous donnera

 ABCb' 

où b ‘est un ensemble de modifications qui annule tout ce qui se passe dans les modifications commises intermédiaires, dans ce cas il défait tout C. Toutes les modifications ne font que rejoindre le groupe b’ (la révision parent rest inchangée à C)