Git diff -w ignoruje białe znaki tylko na początku i na końcu linii

366

Uwielbiam używać git diff -wignorować różnice białych znaków. Ale właśnie zauważyłem, że ignoruje nawet różnice białych znaków w środku linii. Jak mogę zignorować tylko różnice białych znaków na początku (^) lub na końcu ($) linii?

ma11hew28
źródło
31
Zastanawiasz się nad użyciem git diff -b?
Jonas Byström,
5
„-b --ignore-space-change Ignoruj ​​zmiany ilości białych znaków. To ignoruje białe znaki na końcu linii i uznaje wszystkie inne sekwencje jednego lub więcej białych znaków za równoważne.”
mowwwalker

Odpowiedzi:

450

Do użytku na końcu linii:

git diff --ignore-space-at-eol

Zamiast tego, czego obecnie używasz:

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

Na początek linii ... nie masz szczęścia, jeśli chcesz mieć wbudowane rozwiązanie.

Jeśli jednak nie masz nic przeciwko brudzeniu rąk, wypuszcza się tam raczej stara łatka, która dodaje obsługę „--ignore-space-at-sol”.

Fałszywy kod Monkey Rashid
źródło
Dzięki, ale to nie działa, jeśli skonfigurowałeś diff do zewnętrznego narzędzia ... jakieś pomysły?
adardesign
@adardesign, myślę, że prawdopodobnie musiałoby to być skonfigurowane w zewnętrznym narzędziu. Nie jestem pewien, czy jest coś, co git może zrobić, aby zaprezentować różnicę bez zmian białych znaków ... może być jednak źle; git jest dość potężny ...
John
Byłoby miło mieć domyślną konfigurację. Mam na myśli -w lub -b lub --ignore-all-space. Dyskusja na ten temat znajduje się na stronie stackoverflow.com/questions/7310033/...
Artyom
8
Zgadzam się z sugestią -b, ponieważ -w traktuje „abc def” i „abcdef” tak samo, co rzadko jest tym, czego chcę!
Richard Wiseman
3

To stare pytanie, ale wciąż jest regularnie przeglądane / potrzebne. Chcę publikować ostrzeżenia dla czytelników takich jak ja, że spacja, jak wspomniano w pytaniu PO, nie jest tym samym co definicja Regex, aby zawierać znaki nowej linii, tabulatory i spacje - Git prosi o wyraźne określenie. Zobacz niektóre opcje tutaj: https://git-scm.com/book/en/v2/Customizing-Git-Git-Configuration

Jak stwierdzono, git diff -blub git diff --ignore-space-changezignoruje spacje na końcach linii. Jeśli chcesz, aby to ustawienie było domyślnym zachowaniem, następujący wiersz dodaje tę intencję do pliku .gitconfig, więc zawsze będzie ignorować spację na końcu linii:

git config --global core.whitespace trailing-space

W moim przypadku znalazłem to pytanie, ponieważ byłem zainteresowany zignorowaniem „różnic białych znaków powrotu karetki”, więc potrzebowałem tego:

git diff --ignore-cr-at-eollub git config --global core.whitespace cr-at-eolod tutaj .

Możesz także ustawić go jako domyślny tylko dla tego repozytorium , pomijając parametr --global i sprawdzając plik ustawień dla tego repozytorium. W przypadku problemu CR, z którym miałem do czynienia, znika po odprawie, jeśli warncrlf lub autocrlf = true w sekcji [core] pliku .gitconfig.

opuszczony
źródło