Jak ustawić git diff --ignore-space-change jako domyślny

110

Prawdopodobnie mógłbym ustawić alias, ale wygląda na to, że powinienem być w stanie ustawić to jako opcję w pliku konfiguracyjnym, tylko że i tak nie widzę, aby to zrobić.

Chcę tylko --ignore-space-changewtedy, gdy robię diff, a nie wtedy, gdy robię aplikację lub cokolwiek innego. Staram się, aby różnica była łatwiejsza do zrozumienia, nie zaśmiecając jej dodatkowymi liniami +/-, które nie mają w nich rzeczywistych zmian.

boatcoder
źródło
2
chcesz zmienić poprawną odpowiedź? :)
igorsantos07
1
teraz jest skrót, git diff -wktóry jest skrótem do --ignore-all-space: Ignoruj ​​białe znaki podczas porównywania linii. To ignoruje różnice, nawet jeśli jedna linia ma białe spacje, podczas gdy druga linia ich nie ma.
João Pimentel Ferreira

Odpowiedzi:

22

Zgodnie z instrukcją Git Config nie ma takiej opcji. Jedyną opcją jest utworzenie aliasu.

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

Dogbert
źródło
Myślałem o tym po przeczytaniu tej strony. Miałem nadzieję, że ktoś znał sposób, który po prostu nie został udokumentowany… no cóż.
boatcoder,
@Dogbert - mam ten sam problem, tylko gdy wykonuję git add -p <nazwa_pliku>, jakieś sugestie?
Guy Avraham
@ JoãoPimentelFerreira To nie czyni go domyślnym.
DylanYoung
jest taka opcja stackoverflow.com/a/53054020/1243247
João Pimentel Ferreira
99

Możesz użyć aliasu git lub aliasu bash, jeśli używasz systemu operacyjnego dostępnego w powłoce.

  1. git alias : uruchom to polecenie, aby dodać alias:

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

    --ignore-space-change can be abbreviated to -w
    aby zastosować alias używając: git dfw

  2. alias bash : uruchom to polecenie, aby dodać alias bash:

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

    Otwórz nowy terminal i możesz bezpośrednio biec, gitdfwaby osiągnąć to samo.

yjqg6666
źródło
8
Powinna to być akceptowana odpowiedź, ponieważ w rzeczywistości przydaje się przy przykładach, a nie „przejdź do tego adresu URL”.
Dr Strangepork
7
Zgodnie z aktualną dokumentacją gita , -bjest taki sam jak --ignore-space-change. Jest to zgodne z diffpoleceniem Linuksa , gdzie -woznacza --ignore-all-space. To ważne rozróżnienie, ponieważ na przykład tekst a b cjest traktowany tak samo, jak abcw przypadku -wopcji; w kodzie raczej nie jest to, czego chcesz, więc -bjest to lepsza opcja.
Richard Wiseman,
10

EDYCJA: JESTEM GŁUPCZY I NIE CZYTAŁEM DOKŁADNIE TWOJEGO WNIOSKU

Sposób na osiągnięcie czegoś podobnego, od man git-config:

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

Więc otwórz ~/.gitconfiglub ./.git/config/i dołącz

[apply]
   whitespace = nowarn

Może również nie pozwolić ci na zatwierdzenie czegoś, co zmienia tylko białe znaki, ale jestem pewien, że możesz to zmienić za pomocą niektórych flag.

jakiś pomocny git
źródło
1
OP szukał sposobu na ustawienie wartości domyślnej podczas wykonywania pliku git diff. To robi to dla apply.
denishaskin
10

Stare pytanie (2011), ale teraz jest skrót, git diff -wktóry oznacza --ignore-all-space

Zignoruj ​​spacje podczas porównywania linii. To ignoruje różnice, nawet jeśli jedna linia ma białe spacje, podczas gdy druga linia ich nie ma.

João Pimentel Ferreira
źródło
2

byłoby wspaniale, gdyby było to możliwe z opcją. ale alias działa całkiem dobrze. oto odpowiednie wiersze z mojego .gitconfig:

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

zakłada to użycie colordiff, co polecam, dając ci prawie dokładną kopię tego, co pokaże git diff , z dwiema różnicami:

  1. linia --- w colordiff jest kolorowana inaczej niż ta sama linia w git diff (bardzo drobny problem)
  2. każdy plik jest wyświetlany pojedynczo (denerwujący problem - ktoś zna poprawkę?)

oto mój / etc / colordiffrc:

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

Mac OS X 10.9.2, git w wersji 1.8.5.2 (Apple Git-48)

(colordiff otrzymano z naparu)

Joseph Cheek
źródło