Подтвердить что ты не робот

Использование альтернативного алгоритма diff в Git

Поскольку git предназначен для исходного кода, его алгоритм по умолчанию diff рассматривает линию как минимальную неделимую единицу.

Я пытаюсь отредактировать некоторые файлы разметки, которые заключены в столбец в столбце 80. Добавление предложения может привести к тому, что остальная часть абзаца будет помечена как измененная.

Есть ли способ использовать Git алгоритм diff, более подходящий для текста? Мне нужен тот, который рассматривает слова или предложения как неделимые единицы, а не строки?

4b9b3361

Ответ 1

Вместо этого вы можете попробовать git diff --word-diff.

$ git diff --word-diff
diff --git a/test.txt b/test.txt
index 54585bb..a8cd97e 100644
--- a/test.txt
+++ b/test.txt
@@ -1,7 +1,7 @@
Because git is designed for source code, its diff algorithms {+are bibbity +}
{+bobbity boo+} treat a line as the minimum indivisible unit. I am trying to edit 
some markdown files that are word wrapped at column 80. Adding a sentence can 
cause the rest of the paragraph to be marked as changed.

Is there a way to have Git use a diff algorithm more suited to text? One that 
treats words or sentences as indivisible units rather then lines?
 No newline at end of file

Ответ 2

Возможно, вы ищете word-diff

- word-diff [= <mode>]

Показать слово diff, используя <mode> to разделите измененные слова. По умолчанию, слова ограничены пробелами; видеть --word-diff-regex ниже. Значение <mode> по умолчанию равно, и должно быть одним из следующих:

цвет

Выделите измененные слова, используя только цвета. Implies - цвет.

plain

Показывать слова как [-removed-] и {} Добавлен. Не предпринимает попыток убежать разделители, если они появляются в вход, поэтому выход может быть неоднозначным.

фарфор

Использовать специальный линейный формат предназначенный для потребления script. Добавленные/удаленные/неизменные прогоны напечатанный в обычной унифицированной разности формат, начиная с +/-/символ в начале строки и доходит до конца линии. Представлены новые строки на входе тильдой ~ на собственной линии.

none

Отключить слово diff еще раз.

Обратите внимание, что, несмотря на название первый режим, цвет используется для выделения измененные части во всех режимах, если включен.

http://git-scm.com/docs/git-diff

Ответ 3

Вот пример настройки этого (из этого вопроса). По умолчанию значение -word-diff предполагает, что слово представляет собой строку символов без пробелов. Следующая команда рассмотрит слово, состоящее из одного из следующих:

  • Строка буквенно-цифровых символов и символов подчеркивания
  • Один несимвольный

Команда:

git diff --color-words --word-diff-regex='[A-z0-9_]+|[^[:space:]]'