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?


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”.


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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.