Як я можу отримати найбільшу суму для свого долара за допомогою команди "diff"?


9

У минулому я намагався використовувати команду linux diffбез особливої ​​долі чи терпіння. Зазвичай я використовую утиліту GUI, наприклад DiffMerge або Kdiff.

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

Тож мені цікаво, як досягти наступних речей:

  1. Виділіть зміни або використовуйте кольорове кодування, щоб зробити результат більш читабельним
  2. Об'єднання - Виберіть рядки з відмінностями та впливайте на зміни в одному з файлів

Крім того, я не знайшов багато хороших прикладів під час гуглінгу, тому, якщо у вас є деякі секрети linux-fu, щоб отримати максимальну користь від розрізнень, можете поділитися? Я в основному порівнюю текстові файли конфігурації, але будь-які хитрощі та поради були б чудовими.

Для довідки - утиліта DiffMerge легко показує зміни поряд з кольоровим підсвічуванням. Піктограми вгорі дозволяють перемикатися між переглядами "показати всі", "показати відмінності" та "показати відмінності з контекстом". Буде дуже вподобано частину цієї функціональності в командному рядку.

ps: Я також повинен зазначити, що ще один варіант, який я вважаю досить корисним, це той, про --suppress-common-linesякий я дізнався у цій стислій та читаній публікації в блозі .


3
Я досить багато використовую vimdiff.
nicerobot

@nicerobot Ви можете опублікувати це як відповідь - це дуже корисний і корисний інструмент.
rozcietrzewiacz

Ви не можете, це безкоштовно ..... Вибачте, не могло це допомогти: D
whoami

Більшість моїх відмінностей я роблю в Emacs.
Жил "ТАК - перестань бути злим"

@whoami - що?
cwd

Відповіді:


9

Без особливої ​​послідовності:

  • meld це дуже симпатична програма diff, яка робить дуже непогані розходження і тристоронні злиття
  • 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, що відрізняються та об'єднуються.


1
Я також використовую diffuseзовсім небагато.
Арседж

diff -u також досить простий, я вважаю.
габе.


3

Щоб отримати забарвлення у відмінність, слід переглянути http://colordiff.sourceforge.net/ . Це просто обгортка навколо diff і, як така, всі варіанти команд все ще працюють.

У випадку, якщо у вас є ubuntu, просто напишіть:

    # sudo apt-get install colordiff

Ризикувати не дотриманням вашого випадку використання git- це дуже приємний VCS, який добре поєднується з багатьма різними та об'єднуючими інструментами (як командним рядком, так і графічним інтерфейсом). Спробуйте, якщо це варіант.


1

Спробуйте sdiff

diffтакож є варіанти ( -eабо -ed) створити сценарій злиття для використання зed

sdiff, diffі edмає бути частиною вашої оболонки куди завгодно.

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.