Использование альтернативного алгоритма diff в Git
Поскольку git
предназначен для исходного кода, его алгоритм по умолчанию diff
рассматривает линию как минимальную неделимую единицу.
Я пытаюсь отредактировать некоторые файлы разметки, которые заключены в столбец в столбце 80. Добавление предложения может привести к тому, что остальная часть абзаца будет помечена как измененная.
Есть ли способ использовать Git алгоритм diff, более подходящий для текста? Мне нужен тот, который рассматривает слова или предложения как неделимые единицы, а не строки?
Ответы
Ответ 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:]]'