Раскрашивание пробела в git -диффузе

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

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

-      else{ 
+      else{

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

Ответ 1

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

 git config color.diff.whitespace "red reverse"

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

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

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

Дополнительную документацию по этим опциям конфигурации можно найти в git странице руководства по настройке

Если вы не хотите использовать kludge -R, вы можете использовать опцию HighSpace Error Highlight на странице diff man.

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

Выделите ошибки пробела в строках, указанных в цвете, указанном в цвете .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 (Q4 2016), этот псевдоним может быть заменен на:

git config diff.wsErrorHighlight all

Смотрите doc на git diff и on git config.

Ответ 2

Используйте 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 и т.д.) Он показывает, что весь файл изменился, но не показывает, как.

Ответ 3

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

Затем вы можете использовать поиск регулярных выражений less, например.

/[[:space:]]+$

Ответ 4

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