В прошлом я пытался использовать команду linux diff
без особой удачи или терпения. Я обычно заканчиваю тем, что использую утилиту с графическим интерфейсом, такую как DiffMerge или Kdiff.
Недавно я начал diff
снова пытаться использовать файлы для сравнения файлов на удаленных системах с помощью ssh, и я обнаружил, что эта -y / --side-by-side
опция очень полезна, но я все еще чувствую, что я не делаю большую часть этой утилиты.
Поэтому мне любопытно, как добиться следующих вещей:
- Выделите изменения или используйте цветовое кодирование, чтобы сделать вывод более читабельным
- Слияние - выделение строк с различиями и внесение изменений в один из файлов
Кроме того, я не нашел много хороших примеров, когда гуглил, поэтому, если у вас есть секреты linux-fu для получения максимальной отдачи от diff, не могли бы вы поделиться? В основном я буду сравнивать текстовые конфигурационные файлы, но любые хитрости и советы будут замечательными.
Для справки - Утилита DiffMerge легко показывает изменения рядом с выделением цвета. Значки вверху позволяют переключаться между представлениями «показать все», «показать различия» и «показать различия в контексте». Хотелось бы некоторые из этих функций в командной строке.
пс: Я хотел бы также отметить , что один другой вариант , который я считаю весьма полезным является --suppress-common-lines
который я выучил на этом лаконичном и читаемом блоге .
источник
Ответы:
В определенной последовательности:
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.
источник
diffuse
совсем немного.Я нашел
vimdiff
очень полезным.источник
Чтобы получить раскраску в diff вы должны посмотреть на http://colordiff.sourceforge.net/ . Это просто оболочка для diff, поэтому все параметры команды по-прежнему работают.
Если у вас есть Ubuntu, просто напишите:
Риск несоблюдения вашего варианта использования
git
- это очень хорошая VCS, которая хорошо интегрируется со многими инструментами сравнения и слияния (как с командной строкой, так и с графическим интерфейсом). Попробуйте, если это вариант.источник
Пытаться
sdiff
diff
также имеет параметры (-e
или-ed
) для создания сценария слияния для использования сed
sdiff
,diff
Иed
должна быть частью вашей оболочки , где бы вы ни находились .Ваше программное обеспечение контроля версий , вероятно , также имеет
diff
иmerge
инструмент , построенный в.источник