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?
git
line-endings
git-diff
Stonky
źródło
źródło
git config diff.wsErrorHighlight all
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.)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żyjaby 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 .
źródło
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.
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.
źródło
git diff > somediff && vi somediff
, że vim pokazuje CRLF również jako ^ M. alecat -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
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
podświetla wszystkie zmiany spacji na końcach wierszy .
źródło
podświetla różnice z białych znaków w zmienionych wierszach.
źródło
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.
źródło
git difftool --tool=meld doesn't
nawet uruchom meldunek. Nie wiem, czy to dlatego, że rebase jest w toku, czy nie.