как показать различия между пробелами с помощью git --word-diff? - PullRequest
0 голосов
/ 01 сентября 2018

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

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

  • при запуске git diff показывает абзац перед красным и абзац красным, что затрудняет выявление различий
  • при запуске git diff --word-diff, он показывает абзац после серым цветом и не показывает изменения пробела
  • при запуске git diff --word-diff-regex=. показывает изменения пробела (отлично!), Но [EDIT] выполняет разностное преобразование, которое часто не читается, так как смешивает буквы из разных слов для минимизации различий, например: git show --word-diff-regex=. 4a720394bba39ce1e67d518b909cbb1c25f63d09 [- * patch compile-]r [-so `isM-]a[-inModule`-] [-is true when -d:isMainModuleIsAlwaysTr-]{+m+}u[-e-] [- T-]{+c+}h[-at'll give speedup-] be[-nefi-]t[-, and we don'-]t[- hav-]e{+r+} [-to p-]{+w+}a[-tch stdlib files-]{+y+}. ]#

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

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

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

Ответы [ 2 ]

0 голосов
/ 21 января 2019

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

0 голосов
/ 07 января 2019

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

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

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

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

enter image description here

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

enter image description here

...