Jeśli chodzi o formatowanie kodu, jestem raczej purystą :). Bardzo często usuwam niepotrzebne spacje (linie zawierające tylko ws, ws na końcu linii itp.). Ustawiłem nawet vima, aby pokazywał tego rodzaju linie w kolorze czerwonym.
Mój problem polega na tym, że używając git-diff często widzę coś takiego:
- else{
+ else{
Nawet jeśli mam kolor git-diff, nie widzę różnicy (w tej konkretnej sytuacji usunąłem 1 ws na końcu linii). Czy jest jakiś sposób, aby powiedzieć git-diff, aby pokazał, że ws jest pokolorowany na czerwono? (na przykład te dopasowane do / \ s + $ / regexp).
git
colors
diff
whitespace
radarek
źródło
źródło
Odpowiedzi:
Może być konieczne ustawienie ustawienia konfiguracji color.diff.whitespace, np. Za pomocą:
(Zakładam, że już masz
color.diff
lubcolor.ui
ustawiłeś,auto
ponieważ mówisz, że i tak widzisz kolorowe plamygit diff
).Jeśli chcesz precyzyjnie dostroić typ błędów białych znaków, które są podświetlone na czerwono, możesz to zmienić
core.whitespace
, aleblank-at-eol
jest ono domyślnie włączone, więc prawdopodobnie nie będziesz musiał tego zmieniać w przykładzie, o którym wspominasz.Możliwym źródłem nieporozumień jest to, że w wyniku działania programu
git diff
białe znaki są podświetlane tylko w wprowadzanych wierszach, a nie w usuwanych. ( Aktualizacja: jak wskazuje Paul Whittaker w swojej odpowiedzi , którą należy głosować za pozytywem :), możesz to zobaczyć, odwracając znaczenie różnicy zgit diff -R
.)Więcej dokumentacji na temat tych opcji konfiguracyjnych można znaleźć na stronie podręcznika git config
Jeśli nie chcesz używać
-R
kludge, możesz użyć opcji WhiteSpace Error Highlight ze strony podręcznika diff .git diff --ws-error-highlight=new,old <file>
lub
git diff --ws-error-highlight=all <file>
Nie wiem, jak to na stałe włączyć i zapisać to w konfiguracji, oprócz używania aliasu:
git config alias.df 'diff --ws-error-highlight=all'
Teraz możesz użyć:
git df <file>
Aby zobaczyć zmiany na czerwono.
Zauważ, że w Git 2.11 (Q4 2016) ten alias może zostać zastąpiony przez:
Zobacz dokument dalej
git diff
i dalejgit config
.źródło
git diff -R
git config diff.wsErrorHighlight all
. Służygit config --global [...]
do wprowadzania zmian globalnych (tj. Mających wpływ na wszystkie repozytoria).Służy
git diff -R
do przekształcania usuniętych linii w dodane linie. Następnie końcowe białe znaki zostaną podświetlone.(Zakłada się, że masz już włączone podświetlanie białych znaków, zgodnie z ustawieniami kolorów z odpowiedzi Marka. Kredyt za tę metodę należy do posta Junio pod adresem http://git.661346.n2.nabble.com/Highlighting-whitespace-on-removal- with-git-diff-td5653205.html .)
Na przykład, podczas konwersji pliku z końcówek linii DOS do Uniksa,
git diff -R
wyraźnie pokazuje mi^M
znaki (dis) pojawiające się na końcach linii. Bez-R
(i bez-w
itd.) Pokazuje, że cały plik się zmienił, ale nie pokazuje, jak.źródło
git diff | cat -A | less -S
jeśli jesteś zdesperowany, ale oprócz powrotu karetkicat
wyświetli również dowolny kolor, podświetlając kody ucieczki dosłownie.cat -A
nie jest przenośny. W kotach BSD nie ma takiej opcji. Użyjcat -vet
zamiast tego.Użyj
git diff --color | less -R
. Dzięki-R
temu kody kontroli kolorów są przyjazne dla człowieka.Następnie możesz skorzystać z
less
wyszukiwania wyrażeń regularnych, npźródło
vim
mówiąc, to wyrażenie regularne również działa .less -R
właśnie ułatwił mils --color
przejścieless
.git diff
Wydaje się, że moja wersja już to robi - mam git 1.7.4.1 i ustawiłemcolor.ui = auto
.źródło