2010-11-03 3 views
26

Dans Mercurial j'ai un ancien changeset qui est tout bon en dehors des modifications apportées à un seul fichier. Comment reviendrais-je les modifications apportées à ce fichier unique?Mercurial Revert/Backout un seul fichier

Même juste être capable d'afficher l'état du fichier à l'changeset précédente serait bon alors je pourrais couper & coller.

Mon client Mercurial est TortoiseHg.

Répondre

11

A partir de TortoiseHg 2.8.1

  1. en Commit cas où quelque chose va mal
  2. droit cliquez sur la révision que vous voulez revenir à, sélectionnez Parcourir à la révision
  3. Trouvez le fichier que vous souhaitez revenir à cette révision, clic droit, « Revert à cette révision (Ctrl + Maj + R)
  4. Répétez 3 pour tous les fichiers que vous souhaitez revenir
2

J'ai découvert la réponse à la deuxième partie au moins. Pour afficher le contenu d'un seul fichier à une ancienne révision, procédez comme suit dans TortoiseHg:

  1. Cliquez avec le bouton droit de la souris sur le fichier et sélectionnez Explorateur de référentiel.
  2. Cliquez sur la révision à laquelle vous souhaitez revenir.
  3. Faites un clic droit sur le fichier dans le volet inférieur gauche. Sélectionnez soit vue à la révision ou enregistrez à revison.
7

Ouvrez Repository Browser, accédez à l'ensemble de modifications souhaité. Vous verrez une liste de fichiers modifiés. Choisissez le fichier qui vous intéresse et cliquez sur Revert file contents

12

La réponse de Raghuram n'est plus correcte en raison de modifications stylistiques (~) apportées à TortoiseHG. "Repository Browser" a été renommé "TortoiseHG Workbench", mais, plus important encore, "Rétablir le contenu du fichier" n'est plus une action dans le menu contextuel.

de la version 2.0.4, vous voudrez:

  1. fondez votre référentiel actuel en cas de problème.
  2. Ouvrez le changeset, dans « TortoiseHG Explorateur »
  3. Dans la liste des fichiers, faites un clic droit sur le fichier qui à revenir.
  4. Sélectionnez "Rétablir la révision" dans le menu contextuel.
  5. Une boîte de dialogue de confirmation contenant une case à cocher intitulée «Rétablir tous les fichiers pour cette révision» s'affiche. Assurez-vous qu'il n'est pas coché.
  6. Appuyez sur "OK".
  7. Vérifiez que seul ce fichier a été restauré. Si tout était revenue, la mise à jour à la révision créée à l'étape 1.

La première fois que j'ai essayé, je ne suis pas sûr de ce que je fait de mal, mais je revins tout le dépôt au lieu du seul fichier. Donc, assurez-vous de bien valider une nouvelle révision avant de l'essayer.

+1

Il revient à cette révision, mais ne rétablit pas le changement dans la révision elle-même. Très gênant. –

+0

Je ne suis pas sûr de ce que vous cherchez. Peut-être que vous voulez revenir à la révision avant cela? – geppy

+0

Oui, je veux inverser la moitié de certains commit, disons, plusieurs fichiers. Cela signifie que je veux les rétablir aux révisions qu'ils avaient avant cette validation. Je dois donc regarder dans l'historique de chaque fichier, trouver une révision avant mon commit et le rétablir séparément. 10 fichiers et vous détestez HG. –

1

Pour voir une ancienne version d'un fichier en utilisant TortoiseHg (à partir de la version 2.2.1), ouvrez TortoiseHG Workbench, faites un clic droit sur un ancien rev, et cliquez sur "Parcourir à rev ..."

5

CLI version, la version applicable à tout (frais) de TortoiseHG

Pour annuler les modifications que dans le fichier, introduites dans changeset CSET, utiliser cette forme de backout

hg backout -r CSET --include FILE

+1

Je ne suis pas sûr que cela ferait ce que je veux. Je pense que cela reviendrait à des modifications pour un fichier dans un changeset spécifique. Je voudrais revenir à un fichier exactement comme dans un changeset spécifique, en ignorant tous les changsets suivants. –

+0

Fonctionne parfaitement – Pykler

0

Alors que Browse at rev... de la recommandation d'utiliser TortoiseHg vous aidera à voir ce qui ont été changés (c.-à- ce que vous pourriez vouloir retirer), il ne vous aidera pas à sauvegarder le fichier - si, comme plus d'une réponse suggère, vous choisissez Revert to Revision, vous ne reculerez que modifications suivantes, pas le changement dans le changeset.

La meilleure façon d'annuler un changeset pour un seul fichier (au moins, au TortoiseHg 2.6.1):

  1. Accédez au fichier dans l'explorateur Windows et sélectionnez-le
  2. Faites un clic droit et du sous-menu contextuel TortoiseHg, choisissez Revision History
  3. Sélectionnez la révision avant celui que vous essayez de revenir en arrière
  4. faites un clic droit et choisissez Revert to Revision
  5. Assurez-vous que la case à cocher « Rétablir tous les fichiers de cette révision » est désactivée (elle soit par défaut après avoir suivi ces étapes)

Bien sûr, si par « vieux changeset » vous voulez dire qu'il ya des changements ultérieurs à ce fichier que vous voulez conserver, il n'y a aucun moyen de le faire, sauf pour examiner le changeset et annuler manuellement les changements.

Questions connexes