Mój edytor zmienia zakończenia wierszy moich plików źródłowych. Kiedy to robię git diff
, widzę tę samą linię dwa razy - raz z, -
raz z +
- bez widocznej różnicy.
Jak mogę git diff
pokazać mi, na czym właściwie polegała ta zmiana?
Odpowiedzi:
Najpierw upewnij się, że używasz kolorowego wyjścia (np. With git diff --color
) i że włączyłeś podświetlanie białych znaków za pomocą (np.)
git config color.diff.whitespace "red reverse"
Może to jednak nie działać we wszystkich przypadkach, ponieważ git
nie wydaje się, aby podświetlać końcowe białe znaki dla usuniętych wierszy. Aby zobaczyć usunięte spacje, po prostu użyj
git diff -R
aby umieścić spację po „dodanej” stronie porównania, gdzie zostanie ona podświetlona.
Aby uzyskać więcej szczegółów, zobacz odpowiedzi na to pytanie SO .
000000f0 2d 2d 7d 0a 2b 2b 7d 0a |--}.++}.|
7d to nawias klamrowy '}'.
Możesz zobaczyć różnicę w zakończeniu linii za pomocą następującego polecenia.
git diff | cat -v
Następnie wypisywane jest „^ M” jako zakończenie CRLF (DOS), nic dla zakończenia LF (Unix).
Najwyraźniej git diff robi właściwą rzecz, wypisując znaki CR i LF dla zakończenia CRLF. Ale ponieważ CR jest konsumowana przez konsolę, nie możemy tego zobaczyć. Używając cat -v, możemy uczynić go widocznym.
git diff > somediff && vi somediff
, że vim pokazuje CRLF również jako ^ M. ale cat -v
jest schludny.
cat
nauczyłem się opcji, o której nie byłem świadomy. :-)
Jednym ze sposobów zobaczenia zmian białych znaków jest wykonanie „różnicowania słów” znak po znaku
git diff --color --word-diff-regex=.
Podświetla to wszystkie zmiany spacji wszędzie w wierszach . Usunięto odstępy owinięta [-
i -]
i dodano odstępy w {+
i +}
.
Alternatywnie, jak zasugerował Alex
git diff --color --ws-error-highlight=new,old
podświetla wszystkie zmiany spacji na końcach wierszy .
git diff --ws-error-highlight=new,old
podświetla różnice z białych znaków w zmienionych wierszach.
Graficzne narzędzie porównywania lepiej pokaże zmianę - spróbuj git difftool
.
Użyj połączenia i ustaw preferencje, aby wyświetlać spacje. (Edycja -> Preferencje -> Pokaż odstępy.)
Inne narzędzia graficzne prawdopodobnie mają podobne opcje - odpowiedź @ Cotton + komentarz mówi ci, jak to zrobić z vimdiff.
git difftool --tool=meld doesn't
nawet uruchom meldunek. Nie wiem, czy to dlatego, że rebase jest w toku, czy nie.
git config diff.wsErrorHighlight all