Git diff -w ігнорує пробіли лише на початку та в кінці рядків


366

Я люблю використовувати, git diff -wщоб ігнорувати відмінності пробілів. Але я щойно помітив, що він ігнорує навіть відмінності пробілів у середині рядків. Як я міг лише ігнорувати відмінності пробілів, які виникають на початку (^) або в кінці ($) рядків?


31
Розглянуто git diff -bнатомість використання ?
Jonas Byström

5
"-b - зміна простору-простору Ігноруйте зміни кількості пробілів. Це ігнорує пробіли в кінці рядка і вважає всі інші послідовності одного або декількох символів пробілу еквівалентними."
mowwwalker

Відповіді:


450

Для закінчення використання рядка:

git diff --ignore-space-at-eol

Замість того, що ви використовуєте зараз:

git diff -w (--ignore-all-space)

Для початку лінії ... вам не пощастило, якщо ви хочете вбудовувати рішення.

Однак, якщо ви не проти забруднити руки, там десь пливе досить стара латка, яка додає підтримку "--ignore-space-at-sol".


Дякую, але це не працює, якщо ви налаштували diff на зовнішній інструмент .. будь-які ідеї?
adardesign

@adardesign, я думаю, це, мабуть, доведеться налаштувати у зовнішньому інструменті. Я не впевнений, чи є щось, що може зробити Git, щоб представити різницю без змін пробілів ... але, можливо, буде неправильно; git досить потужний ...
johnny

Було б добре, щоб він був налаштований за замовчуванням. Я маю на увазі -w або -b або --ignore-all-space. Про це йде дискусія на сайті stackoverflow.com/questions/7310033/…
Артем

8
Я погоджуюся з пропозицією -b, оскільки -w трактує "abc def" і "abcdef" як те саме, що рідко є тим, що я хочу!
Річард Вісман

3

Це старе питання, але все ще регулярно переглядається / потребується. Я хочу розмістити на увазі читачів, таких як я, що пробіл, про який йдеться у запитанні ОП, не те саме, що визначення Regex, включати нові рядки, вкладки та пробіли - Git просить вас бути чіткими. Дивіться деякі варіанти тут: https://git-scm.com/book/en/v2/Customizing-Git-Git-Configuration

Як зазначено, git diff -bабо git diff --ignore-space-changeпроігнорувати пробіли на кінцях рядків. Якщо ви хочете, щоб це налаштування було поведінкою за замовчуванням, наступний рядок додає цей намір до вашого файлу .gitconfig, тому він завжди ігнорує пробіл у кінцях рядка:

git config --global core.whitespace trailing-space

У моєму випадку я знайшов це питання, тому що мені було цікаво ігнорувати "різниці між пробілами у звороті каретки", тому мені це було потрібно:

git diff --ignore-cr-at-eolабо git config --global core.whitespace cr-at-eolвід сюди .

Ви також можете зробити його за замовчуванням лише для цього репо , опустивши параметр --global та зареєструвавшись у файлі налаштувань для цього репо. Для проблеми з CR, з якою я стикався, вона минає після реєстрації, якщо warncrlf або autocrlf = true у розділі [core] файлу .gitconfig.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.