Comment puis-je tirer le meilleur parti de mon argent avec la commande «diff»?

9

J'ai essayé d'utiliser la diffcommande linux dans le passé sans beaucoup de chance ou de patience. Je finis généralement par utiliser un utilitaire graphique comme DiffMerge ou Kdiff.

Récemment, j'ai recommencé à essayer de diffcomparer des fichiers sur des systèmes distants via ssh, et j'ai trouvé l' -y / --side-by-sideoption très utile, mais j'ai toujours l'impression de ne pas tirer le meilleur parti de cet utilitaire.

Je suis donc curieux de savoir comment réaliser les choses suivantes:

  1. Mettez en surbrillance les modifications ou utilisez le codage couleur pour rendre la sortie plus lisible
  2. Fusionner - Sélectionnez des lignes avec des différences et effectuez les modifications dans l'un des fichiers

De plus, je n'ai pas trouvé beaucoup de bons exemples lors de la recherche sur Google, donc si vous avez des secrets linux-fu pour tirer le meilleur parti de diff, pourriez-vous s'il vous plaît partager? Je comparerai principalement des fichiers de configuration basés sur du texte, mais tous les trucs et astuces seraient merveilleux.

Pour référence - L'utilitaire DiffMerge montre facilement les changements côte à côte avec la mise en évidence des couleurs. Les icônes en haut vous permettent de basculer entre les vues de "Tout afficher", "Afficher les différences" et "Afficher les différences avec le contexte". J'adorerais certaines de ces fonctionnalités à l'invite de commande.

ps: Je dois également noter qu'une autre option que je trouve très utile est celle --suppress-common-linesque j'ai apprise sur ce billet de blog concis et lisible .

cwd
la source
3
J'utilise vimdiff un peu.
nicerobot
@nicerobot Vous pouvez poster ceci comme réponse - c'est un outil très utile et utile.
rozcietrzewiacz
Vous ne pouvez pas, c'est gratuit ..... Désolé ne pouvait pas l'aider: D
whoami
Je fais la plupart de mes diffs dans Emacs.
Gilles 'SO- arrête d'être méchant'
@whoami - quoi?
cwd

Réponses:

9

Dans aucune séquence particulière:

  • meld est un très bon programme de diff qui fait de très belles différences et des fusions à trois.
  • git config --global merge.conflictstyle diff3vous offre une sortie de fusion à trois voies pour une utilisation avec des outils comme meld.
  • wdifffait des différences de mots , très agréable si coloré :wdiff -w "$(tput bold;tput setaf 1)" -x "$(tput sgr0)" -y "$(tput bold;tput setaf 2)" -z "$(tput sgr0)" ...
  • Pour minimiser la corruption dans la diffsortie, j'utilise généralement l' option --ignore-all-space( -w)
  • diff-ignore-moved-lines* fait ce qui est indiqué sur l'étiquette.
  • difff* peut être utilisé pour différencier uniquement les lignes qui correspondent dans des champs donnés.

* Avis de non-responsabilité: je suis l'auteur, et les ai développés pour aider à différencier et fusionner CLI et GUI.

l0b0
la source
1
J'en utilise aussi diffusepas mal.
Arcege
diff -u est également assez simple, je trouve.
gabe.
5

Je l'ai trouvé vimdifftrès utile.

nicerobot
la source
3

Pour obtenir de la coloration dans le diff, vous devriez consulter http://colordiff.sourceforge.net/ . C'est juste un wrapper autour de diff et, en tant que tel, toutes les options de commande fonctionnent toujours.

Dans le cas où vous avez ubuntu, écrivez simplement:

    # sudo apt-get install colordiff

Le risque de ne pas répondre à votre cas d'utilisation gitest un très joli VCS qui s'intègre bien avec de nombreux outils différents et fusionnés (à la fois en ligne de commande et en interface graphique). Essayez-le si c'est une option.

Alexandre Martins
la source
1

Essayer sdiff

diffa également des options ( -eou -ed) pour créer un script de fusion à utiliser aveced

sdiff, diffet eddevrait faire partie de votre coquille où que vous alliez.

Votre logiciel de contrôle de version a probablement aussi diffet mergeconstruit outil.

adam f
la source