Comment éditer un tampon contre une révision?


8

Je veux exécuter ediff pour comparer ma version actuelle d'un fichier (en git) avec une version du fichier sur une branche différente.

Je cours à M-x ediff-revisionpartir d'un tampon ouvert pour le fichier en question. Je réponds aux deux questions:

  • Comparer les révisions pour le fichier: je vide cette réponse (la valeur par défaut est le tampon actuel qui est correct).
  • Révision 1 à comparer: j'accepte à nouveau la valeur par défaut ("dernière version du fichier par défaut").
  • Révision 2 pour comparer: j'entre un nom de branche git

Cela fonctionne très bien pour visualiser les différences entre les deux fichiers. Cependant, je veux pouvoir modifier la version actuelle (c'est-à-dire en appuyant sur aou bdans ediff pour copier ou supprimer des blocs de diff) et le tampon "version actuelle" est un tampon en lecture seule avec un nom fabriqué ( file.~git-branch~). Je veux que le tampon "version actuelle" soit le tampon en lecture-écriture avec lequel j'ai commencé, pas un tampon en lecture seule sur la version de la branche actuelle.

Réponses:


7

Emacs fait ce que vous lui avez dit de faire au lieu de ce que vous vouliez dire. ediff-revisiondemande trois informations:

  1. Le fichier sur lequel travailler - par défaut: le fichier que le tampon actuel visite.
  2. L'ancienne révision - par défaut: la dernière révision.
  3. La nouvelle révision - par défaut: l'état actuel.

À l'étape 1, vous sélectionnez le fichier, vous ne dites pas à Emacs que vous souhaitez utiliser le fichier tel qu'il est dans le tampon. La valeur par défaut pour l'étape 2 est la dernière révision, pas la copie de travail actuelle. La valeur par défaut pour l'étape 3 est le contenu du tampon, qui est la copie de travail si le tampon n'est pas modifié. Avec ce que vous avez fait, vous comparez ce que vous avez extrait (généralement la dernière révision de la branche actuelle) avec une autre branche, pas la copie de travail avec une autre branche.

Vous devez donner le nom de la branche comme première révision (étape 2) et laisser la troisième question vide pour dire que vous souhaitez utiliser l'état du tampon. Vous ne pouvez sélectionner l'état du tampon actuel que pour la révision 2, pas pour la révision 1 (cela est intégré ediff-vc-internal).


7

Lors de l'utilisation de magit :

  1. Utilisez l -al lpour afficher les révisions de toutes les branches de votre historique
  2. accédez à la ligne contenant la révision à laquelle vous souhaitez comparer votre contenu de tampon actuel.
  3. Tapez det on vous demande pour quelle révision comparer l'arbre de travail actuel (la valeur par défaut est la révision au point). Confirmer.
  4. Vous obtiendrez un aperçu des différences sur les modifications de toutes les différences de fichier entre l'arborescence de travail actuelle et la révision. Mettez un point sur le fichier qui vous intéresse et appuyez sur epour appeler une session ediff dessus.

Magit propose un certain nombre d'options pour afficher les révisions (étape 1). Vous pouvez choisir Si vous avez une structure de branche très complexe, vous pouvez utiliser un filtrage supplémentaire pour trouver la révision souhaitée.


Génial! Ceci est exactement ce que je cherchais. Juste une chose ... Que voulez-vous dire -al? Je fais juste normalement l lou l asur le tampon d'état magit.
nevhewtom

C'était pour une ancienne interface utilisateur de magit. Dans les versions actuelles, vous pouvez utiliser l a. La disposition de Magit a changé plusieurs fois au cours des 3 dernières années.
dfeich
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.