Как показать различия пробелов с помощью 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, где отображается больше контекста, но также выделяется часть, которая фактически изменилась.