Как я могу получить максимальную отдачу от своего доллара с помощью команды «diff»?

9

В прошлом я пытался использовать команду linux diffбез особой удачи или терпения. Я обычно заканчиваю тем, что использую утилиту с графическим интерфейсом, такую ​​как DiffMerge или Kdiff.

Недавно я начал diffснова пытаться использовать файлы для сравнения файлов на удаленных системах с помощью ssh, и я обнаружил, что эта -y / --side-by-sideопция очень полезна, но я все еще чувствую, что я не делаю большую часть этой утилиты.

Поэтому мне любопытно, как добиться следующих вещей:

  1. Выделите изменения или используйте цветовое кодирование, чтобы сделать вывод более читабельным
  2. Слияние - выделение строк с различиями и внесение изменений в один из файлов

Кроме того, я не нашел много хороших примеров, когда гуглил, поэтому, если у вас есть секреты linux-fu для получения максимальной отдачи от diff, не могли бы вы поделиться? В основном я буду сравнивать текстовые конфигурационные файлы, но любые хитрости и советы будут замечательными.

Для справки - Утилита DiffMerge легко показывает изменения рядом с выделением цвета. Значки вверху позволяют переключаться между представлениями «показать все», «показать различия» и «показать различия в контексте». Хотелось бы некоторые из этих функций в командной строке.

пс: Я хотел бы также отметить , что один другой вариант , который я считаю весьма полезным является --suppress-common-linesкоторый я выучил на этом лаконичном и читаемом блоге .

УХО
источник
3
Я использую vimdiff совсем немного.
nicerobot
@nicerobot Вы можете опубликовать это как ответ - это очень полезный и полезный инструмент.
rozcietrzewiacz
Вы не можете, это бесплатно ..... Извините, ничего не поделаешь: D
whoami
Я делаю большую часть моих тренировок в Emacs.
Жиль "ТАК - перестань быть злым"
@whoami - что?
cwd

Ответы:

9

В определенной последовательности:

  • meld это очень хорошая программа сравнения, которая делает очень хорошие сравнения и трехсторонние слияния.
  • git config --global merge.conflictstyle diff3получает трехсторонний вывод слияния для использования с такими инструментами, как meld.
  • wdiffделает разницы в словах , очень хорошо, если цветные :wdiff -w "$(tput bold;tput setaf 1)" -x "$(tput sgr0)" -y "$(tput bold;tput setaf 2)" -z "$(tput sgr0)" ...
  • Чтобы минимизировать потери в diffвыводе, я обычно использую опцию --ignore-all-space( -w)
  • diff-ignore-moved-lines* делает то, что написано на этикетке.
  • difff* может использоваться для сравнения только тех линий, которые совпадают в данных полях.

* Отказ от ответственности: я автор, и разработал их, чтобы помочь с различий и слияния CLI и GUI.

l0b0
источник
1
Я тоже пользуюсь diffuseсовсем немного.
Arcege
Я считаю, что diff -u также довольно прост.
таращиться
3

Чтобы получить раскраску в diff вы должны посмотреть на http://colordiff.sourceforge.net/ . Это просто оболочка для diff, поэтому все параметры команды по-прежнему работают.

Если у вас есть Ubuntu, просто напишите:

    # sudo apt-get install colordiff

Риск несоблюдения вашего варианта использования git- это очень хорошая VCS, которая хорошо интегрируется со многими инструментами сравнения и слияния (как с командной строкой, так и с графическим интерфейсом). Попробуйте, если это вариант.

Александр Мартинс
источник
1

Пытаться sdiff

diffтакже имеет параметры ( -eили -ed) для создания сценария слияния для использования сed

sdiff, diffИ edдолжна быть частью вашей оболочки , где бы вы ни находились .

Ваше программное обеспечение контроля версий , вероятно , также имеет diffи mergeинструмент , построенный в.

Адам Ф
источник