Как сделать git diff --ignore-space-change значением по умолчанию


110

Возможно, я мог бы настроить псевдоним, но похоже, что я смогу установить это как параметр в файле конфигурации, только я не вижу способа это сделать.

Я хочу только тогда, --ignore-space-changeкогда я делаю diff, а не когда я применяю или что-то еще. Я пытаюсь облегчить понимание различий, не загромождая их посторонними линиями +/-, в которых нет реальных изменений.


2
хотите изменить правильный ответ? :)
igorsantos07

1
теперь есть ярлык, git diff -wкоторый является ярлыком для --ignore-all-space: Игнорировать пробелы при сравнении строк. Это игнорирует различия, даже если в одной строке есть пробелы, а в другой - нет.
Жуан Пиментел Феррейра,

Ответы:


22

Согласно руководству по Git Config, такой опции нет. Ваш единственный вариант - создать псевдоним.

http://git-scm.com/docs/git-config


Я тоже подумал об этом, читая эту страницу. Я надеялся, что кто-то знает способ, который просто не был задокументирован ... да ладно.
boatcoder

@Dogbert - у меня такая же проблема, только когда я выполняю git add -p <file_name>, какие-либо предложения?
Гай Авраам

@ JoãoPimentelFerreira Это не делает его по умолчанию.
DylanYoung


99

Вы можете использовать псевдоним git или псевдоним bash, если используете ОС с поддержкой оболочки.

  1. git alias : запустите эту команду, чтобы добавить псевдоним:

    git config --global alias.dfw 'diff --ignore-space-change'

    --ignore-space-change can be abbreviated to -w
    применить псевдоним, используя: git dfw

  2. bash alias : запустите эту команду, чтобы добавить псевдоним bash:

    echo "alias gitdfw='git diff --ignore-space-change'">>~/.profile

    Откройте новый терминал, и вы можете сразу запустить его, gitdfwчтобы добиться того же.


8
Это должен быть принятый ответ, потому что он действительно полезен с примерами, а не с «переходом по этому URL-адресу».
DrStrangepork

7
Согласно текущей документации git , -bто же самое, что и --ignore-space-change. Он соответствует команде Linux diff, где -wозначает --ignore-all-space. Это важное различие, потому что, например, текст a b cсчитается таким же, как и abcс -wопцией; в коде это вряд ли будет то, что вы хотите, поэтому -bэто лучший вариант.
Ричард Уайзман


10

РЕДАКТИРОВАТЬ: Я ДУРАК И НЕ ПРОЧИТАЛ ВАШ ЗАПРОС

Способ добиться чего-то подобного man git-config:

 apply.whitespace
       Tells git apply how to handle whitespaces, in the same way
       as the --whitespace option. See git-apply(1).

Так что откройте свой ~/.gitconfigили ./.git/config/и добавьте

[apply]
   whitespace = nowarn

Это также может не позволить вам зафиксировать что-то, что изменяет только пробелы, но я уверен, что вы можете отменить это с помощью некоторых флагов.


1
OP искал способ установить значение по умолчанию при выполнении git diff. Это подходит для apply.
denishaskin

10

Старый вопрос (2011 г.), но теперь есть ярлык, git diff -wобозначающий --ignore-all-space

Игнорировать пробелы при сравнении строк. Это игнорирует различия, даже если в одной строке есть пробелы, а в другой - нет.


2

было бы здорово, если бы это было возможно с опцией. но псевдоним работает довольно хорошо. вот соответствующие строки из моего .gitconfig:

[diff]
    tool = mydiff
[difftool "mydiff"]
    cmd = "colordiff -NuBbwi \"$LOCAL\" \"$REMOTE\" | less -R"
[difftool]
    prompt = false
[alias]
    dt = difftool

это предполагает использование colordiff, который я рекомендую, давая вам почти точную копию того, что покажет git diff , с двумя отличиями:

  1. строка --- в colordiff окрашена иначе, чем та же строка в git diff (очень незначительная проблема)
  2. каждый файл отображается по одному (досадная проблема - кто-нибудь знает исправление?)

вот мой / etc / colordiffrc:

plain=off
newtext=green
oldtext=red
diffstuff=cyan
cvsstuff=red

Mac OS X 10.9.2, версия git 1.8.5.2 (Apple Git-48)

(colordiff был получен из пива)

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.