web-dev-qa-db-fra.com

Comment puis-je différencier un seul fichier avec magit?

Supposons que j'ai apporté un certain nombre de modifications non liées aux fichiers non couplés dans mon dépôt git. Je souhaite examiner et valider chacun des fichiers séparément.

Je cours magit-status, et obtenez une liste des fichiers modifiés. Mais les seules commandes magit diff que je peux trouver (d et D) diff révisions entières, pas des fichiers individuels.

Je veux la sortie de git diff <filename>, mais dans le tampon diff de magit. Comment puis-je faire en sorte que magit diffère un seul fichier?

51
Dan

Magit vous permet de "réviser et valider chacun des fichiers séparément" directement à partir du magit-status buffer, sans avoir besoin de tampons diff distincts.

Vous développez simplement le ou les fichiers qui vous intéressent (avec TAB, qui vous montre le diff pour le fichier au point); vous pouvez ensuite mettre en scène les morceaux que vous souhaitez valider (soit le fichier entier, soit des morceaux individuels, ou même une région marquée) avec s mettre en scène (ou u à déchausser). Répétez pour toutes les modifications impliquées dans cette validation et, une fois que tout le nécessaire a été organisé, appuyez sur c pour commencer le commit.

Vous pourriez préférer la visibilité cyclisme comportement que vous obtenez en utilisant C-TAB (à plusieurs reprises) au lieu de la simple bascule que vous obtenez par défaut avec TAB.


Si vous voulez vraiment voir la différence pour un fichier dans un tampon séparé, vous pouvez le faire à partir du tampon du fichier en appelant magit-diff-buffer-file directement, ou en utilisant l'option "diff" (d) dans magit-file-popup. par exemple.:

(global-set-key (kbd "C-c m d") 'magit-diff-buffer-file)
(global-set-key (kbd "C-c m f") 'magit-file-popup)

Notez également le commentaire de @ assem ci-dessous:

Vous pourriez aussi être intéressé par magit-ediff qui est lié à e par défaut, et ouvre une session ediff pour le diff/fichier au point.


D'autres alternatives disponibles dans Emacs par défaut (c'est-à-dire pas Magit) sont:

  • C-xv= appeler vc-diff
  • M-xvc-ediff pour l'équivalent ediff
  • M-xediff-revision pour créer une session ediff avec plus d'options

Je lie vc-ediff à C-xvC-= de sorte que les deux variantes ont des raccourcis clavier similaires.

88
phils

Je recommande de regarder la vidéo du créateur de magit. Il s'agit de 20 minutes et cela vous montre le déroulement du travail tel qu'il était prévu.

Aussi, un petit conseil: vous pouvez utiliser 1 2 3 pour modifier la verbosité diff de l'en-tête actuel.

Un autre petit conseil: si vous n'êtes pas satisfait de la taille des mecs, vous pouvez mettre en scène des régions arbitraires en - c'est vrai - en marquant une région et en appuyant sur s. C'est magique. Je ne connaissais pas cette option depuis un moment, j'étais en train de revenir à la console et de faire git add -p à l'ancienne.

22
abo-abo

Il y a certainement des avantages à ne pas aller à contre-courant lors de l'utilisation d'outils, comme en témoignent les autres réponses.

D'un autre côté, vous voulez parfois simplement dire à votre éditeur ce qu'il doit faire et demander à des gens sur Internet de répondre à vos questions au lieu de vous dire de vouloir faire autre chose.

magit fournit une interface de menu pour faire des choses avec le fichier courant via M-x magit-file-popup. Les touches sur lesquelles vous devez appuyer à partir d'ici sont "du". Cela peut être trop de touches pour vous, si tel est le cas, vous pouvez appeler magit-diff directement comme ceci:

(magit-diff "master" nil (list buffer-file-name))

Vous voudrez peut-être définir votre propre fonction et la liaison de touches pour cela.

magit-diff a des avantages sur vc-diff car si vous permet de sauter à l'emplacement du diff.

1
Att Righ