Как показать различия пробелов с помощью git --word-diff?

Чтобы проиллюстрировать проблему: см. Diff

единственная разница в этом пункте (начиная с A macro that needs различия между пробелами (новые строки вставляются / удаляются в определенных местах);

  • при беге git diff он показывает абзац перед красным и абзац красным, что затрудняет выявление различий
  • при беге git diff --word-diff, он показывает абзац после серым цветом и не показывает изменения пробелов
  • при беге git diff --word-diff-regex=. он показывает изменения пробелов (отлично!), но это также не то, что я хочу, так как он будет делать разностные различия символов, что чаще всего не то, что мы хотим

То, что я хочу, это возможность показать различия между пробелами во время работы --word-diff (или --word-diff-regex), например, через {+ +} а также [- -]; Примечание: для --word-diff=color было бы неплохо показать это, например, также через {+ +} а также [- -] так как иначе они бы исчезли.

Примечание: я использую цвета в моем gitconfig.

Примечание: это не помогает, поскольку различия в пробелах не отображаются в выходных данных git diff --word-diff=porcelain

0 ответов

--word-diff-regex Команда позволяет указать регулярное выражение для настройки --word-diff поведение. Типичный пример использования полной остановки (.) даст посимвольное совпадение, так как регулярное выражение полной остановки соответствует любому символу. Если регулярное выражение не указано, по умолчанию оно отличается в зависимости от типа файла, но обычно игнорирует изменения пробелов, а также использует их в качестве границ слов.

Вы можете использовать регулярное выражение, которое разделяет строки на слова, а также пробелы, используя что-то вроде:

git diff --word-diff-regex="[ ]+|[^ ]+"

С немного подправленной версией вашего связанного примера проблема с git diff --word-diff-regex=. можно увидеть:

В то время как git diff --word-diff-regex="[ ]+|[^ ]+" даст вам:

https://github.com/so-fancy/diff-so-fancy или https://coderwall.com/p/nl-bdg/more-readable-git-word-diff-on-osx может быть лучше подход, показывающий github-подобный diff, где отображается больше контекста, но также выделяется часть, которая фактически изменилась.

Другие вопросы по тегам