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?
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:
vc-diff
vc-ediff
pour l'équivalent ediffediff-revision
pour créer une session ediff avec plus d'optionsJe lie vc-ediff
à C-xvC-= de sorte que les deux variantes ont des raccourcis clavier similaires.
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.
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.