Раскраска пробелов в выводе git-diff

Что касается форматирования кода, я немного пурист:). Я очень часто удаляю ненужные пробелы (строки, содержащие только w, w в конце строк и т. Д.). Я даже установил vim, чтобы показать такие линии, окрашенные в красный цвет.

Моя проблема в том, что с помощью git-diff я часто вижу что-то вроде этого:

-      else{ 
+      else{

Даже если у меня цвет git-diff, я не вижу разницы (в этой конкретной ситуации я убрал 1 ws в конце строки). Есть ли способ сказать git-diff, чтобы показать, что он окрашен в красный? (например, те, которые соответствуют /\s+$/ regexp).

6 ответов

Решение

Вам может потребоваться установить параметр конфигурации color.diff.whitespace, например, с помощью:

 git config color.diff.whitespace "red reverse"

(Я предполагаю, что у вас уже есть color.diff или же color.ui установлен в auto так как вы говорите, что вы видите цветные пятна от git diff тем не мение.)

Если вы хотите точно настроить тип пробельных ошибок, которые выделены красным, вы можете затем изменить core.whitespace, но blank-at-eol включен по умолчанию, так что вам, вероятно, не нужно будет менять это для примера, который вы упомянули.

Возможный источник путаницы заключается в том, что на выходе git diff, пробельные ошибки выделяются только во введенных строках, а не в удаленных. (Обновление: как указывает Пол Уиттекер в своем ответе, который вы должны проголосовать с повышением:), вы можете увидеть это, изменив смысл различий с помощью git diff -R.)

Вы можете найти больше документации по этим параметрам конфигурации на странице руководства git config.

Если вы не хотите использовать -R Кроме того, вы можете использовать опцию WhiteSpace Error Highlight со страницы руководства diff.

--ws-ошибок изюминка =

Выделите ошибки пробелов в строках, обозначенных цветом, указанным в color.diff.whitespace. разделенный запятыми список старого, нового контекста. Когда эта опция не указана, подсвечиваются только пробельные ошибки в новых строках. Например, --ws-error-highlight=new,old выделяет ошибки пробелов как в удаленных, так и в добавленных строках. все можно использовать как сокращение для старого, нового контекста.

git diff --ws-error-highlight=new,old <file>

или же

git diff --ws-error-highlight=all <file>

Я не знаю способа навсегда включить это и сохранить это в конфигурации, кроме использования псевдонима:

git config alias.df 'diff --ws-error-highlight=all'

Теперь вы можете использовать:

git df <file>

Чтобы увидеть изменения в красном.

Обратите внимание, что в Git 2.11 (4-й квартал 2016 года) этот псевдоним может быть заменен следующим:

git config diff.wsErrorHighlight all

Смотрите документ на git diff и на git config,

Использование git diff -R превратить удаленные строки в добавленные строки. Затем конечные пробелы будут выделены.

(Это предполагает, что у вас уже включена подсветка пробелов в соответствии с настройками цвета из ответа Марка. Кредит для этого метода идет в пост Junio ​​по адресу http://git.661346.n2.nabble.com/Highlighting-whitespace-on-removal-with-git-diff-td5653205.html.)

Например, при преобразовании файла из концов строки DOS в Unix, git diff -R ясно показывает мне ^M символы (dis), появляющиеся на концах строк. Без -R (а также без -w и т. д.) показывает, что весь файл изменился, но не показывает, как.

Для ленивых скиммеров просто запустите:

      git config --global diff.wsErrorHighlight all

затем git diffтакже выделяет конечные пробелы в удаленных строках.

Использование git diff --color | less -R, -R делает коды управления цветом удобными для человека.

Тогда вы можете использовать lessпоиск по регулярному выражению, например

/[[:space:]]+$

Моя версия git diff кажется, уже делает это - у меня есть git 1.7.4.1 и установил color.ui = auto,

Упомянутую выше команду также можно включить в файл gitconfig в качестве опций, т.е. вместо

      git config ....

добавление соответствующих параметров, например, в ~/.gitconfig

      [diff]
    wsErrorHighlight = all

[color]
    ui = auto

два варианта выше должны помочь. Самая ранняя версия git, которую я тестировал, была 1.7, но она должна работать и для любой версии после нее. В последних версиях git для параметра «[color]» по умолчанию установлено значение «auto».

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