Мій редактор змінює закінчення рядків моїх вихідних файлів. Коли я це роблю git diff
, я бачу один і той же рядок двічі - один раз із -
і один раз із +
- без видимої різниці.
Як мені git diff
показати, якою насправді була ця зміна?
Відповіді:
По-перше, переконайтеся, що ви використовуєте кольоровий вивід (наприклад, з git diff --color
) і що ви включили підсвічування пробілів за допомогою (наприклад)
git config color.diff.whitespace "red reverse"
Однак це може працювати не у всіх випадках, оскільки, git
схоже, не виділяється кінцевий пробіл для видалених рядків. Щоб побачити пробіли, які ви видалили, просто використовуйте
git diff -R
поставити пробіл на "доданій" стороні порівняння, де він і виділяється.
Докладніше див. Відповіді на це запитання SO .
000000f0 2d 2d 7d 0a 2b 2b 7d 0a |--}.++}.|
7d - це фігурні дужки '}'.
Ви можете побачити різницю в закінченні рядка за допомогою наступної команди.
git diff | cat -v
Потім друкується "^ M" для закінчення CRLF (DOS), нічого для закінчення LF (Unix).
Очевидно, git diff робить правильно, друкуючи символи CR та LF для закінчення CRLF. Але оскільки консоль споживається CR, ми її не бачимо. Використовуючи cat -v, ми можемо зробити його видимим.
git diff > somediff && vi somediff
vim також показує CRLF як ^ M. але cat -v
це акуратно.
cat
який я не знав. :-)
Один із способів побачити пробіли - це зробити символьну «різницю в словах»
git diff --color --word-diff-regex=.
Це підкреслює всі зміни пробілів скрізь у рядках . Вилучені пробільні загортають в [-
і -]
й додав прогалини в {+
і +}
.
Як варіант, як запропонував Алекс
git diff --color --ws-error-highlight=new,old
виділяє всі пробіли в кінцях рядків .
git diff --ws-error-highlight=new,old
виділяє пробіли, різниться в змінених рядках.
Графічний інструмент різниці краще покаже вам зміни - спробуйте git difftool
.
Використовуйте meld та встановіть параметри для відображення пробілів. (Редагувати -> Налаштування -> Показати пробіли.)
Інші графічні інструменти, ймовірно, мають подібні варіанти - відповідь @ Cotton відповідь + коментар підказує, як це зробити за допомогою vimdiff.
git difftool --tool=meld doesn't
навіть запуск meld. Не знаю, чи це тому, що триває перебазування чи ні.
git config diff.wsErrorHighlight all