J'ai essayé d'utiliser la diff
commande 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 diff
comparer des fichiers sur des systèmes distants via ssh, et j'ai trouvé l' -y / --side-by-side
option 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:
- Mettez en surbrillance les modifications ou utilisez le codage couleur pour rendre la sortie plus lisible
- 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-lines
que j'ai apprise sur ce billet de blog concis et lisible .
Réponses:
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 diff3
vous offre une sortie de fusion à trois voies pour une utilisation avec des outils commemeld
.wdiff
fait 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)" ...
diff
sortie, 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.
la source
diffuse
pas mal.Je l'ai trouvé
vimdiff
très utile.la source
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:
Le risque de ne pas répondre à votre cas d'utilisation
git
est 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.la source
Essayer
sdiff
diff
a également des options (-e
ou-ed
) pour créer un script de fusion à utiliser aveced
sdiff
,diff
eted
devrait faire partie de votre coquille où que vous alliez.Votre logiciel de contrôle de version a probablement aussi
diff
etmerge
construit outil.la source