Używam git-diff na pliku, ale zmiana jest na końcu długiej linii.
Jeśli użyję klawiszy kursora, aby przejść w prawo, utraci to kodowanie kolorami - a co gorsza, linie się nie wyrównują - co utrudni śledzenie zmiany.
Czy istnieje sposób, aby zapobiec temu problemowi lub po prostu sprawić, by linie się zawijały?
Używam Git 1.5.5 przez mingw32.
git diff --color-words | fold
fold
ale usuwa kolor. Ponieważ podałeś--color-words
, zakładam, że udało ci się przekazać koloryfold
. W jaki sposób?Odpowiedzi:
Wyświetlanie danych wyjściowych
git diff
jest obsługiwane przez dowolny pager, którego używasz.Zwykle w Linuksie
less
byłby używany.Możesz powiedzieć gitowi, aby używał innego pagera, ustawiając
GIT_PAGER
zmienną środowiskową. Jeśli nie masz nic przeciwko stronicowaniu (na przykład terminal pozwala ci na przewijanie do tyłu), możesz spróbować jawnie ustawićGIT_PAGER
puste, aby zatrzymać korzystanie z pagera. W systemie Linux:Bez pagera linie zostaną zawinięte.
Jeśli twój terminal nie obsługuje kolorowych wydruków, możesz to wyłączyć za pomocą
--no-color
argumentu lub wpisu w sekcji kolorów pliku konfiguracyjnego git.źródło
Lub jeśli używasz mniej jako domyślnego pagera, po prostu wpisz
-S
podczas przeglądania różnic, aby włączyć ponownie zawijanie w mniej.źródło
--word-diff
aby zobaczyć kolorowe podkreślenie zmienionych słów--word-diff
część zasługuje na własną odpowiedź na to pytanie, ponieważ wydaje mi się, że robię wiele, aby pomóc rozwiązać podstawowy problem: zastanawianie się, co się zmieniło na dłuższej linii. Zrobiłem to jeden: stackoverflow.com/a/19253759/313756-S
przez duże S, nie-s
. Less wyświetla komunikat „Złożyć długie linie (naciśnij klawisz RETURN)” u dołu po wpisaniu-S
, a następnie naciśnięcie klawisza Return umożliwia zawijanie.Możesz także użyć,
git config
aby skonfigurować pager do zawijania.Ustawia ustawienie pagera dla bieżącego projektu.
Ustawia pager globalnie dla wszystkich projektów
źródło
git config --global core.pager "less -r"
man less
,-r
nie mówi nic o pakowaniu.Z pełnym uznaniem dla Josha Diehla w komentarzu do tej odpowiedzi , jednak uważam, że powinna to być odpowiedź sama w sobie, dlatego dodając:
Jednym ze sposobów radzenia sobie z różnicami w długich liniach jest użycie różnicy zorientowanej na słowa. Można to zrobić za pomocą:
W takim przypadku otrzymasz znacznie inny wynik różnicowy, który pokazuje konkretnie to, co zmieniło się w linii.
Na przykład zamiast uzyskać coś takiego:
Możesz dostać coś takiego:
Lub z koloryzacją zamiast tego:
Możesz dostać to:
Teraz, jeśli porównujesz naprawdę długą linię, możesz nadal mieć problemy z sytuacją pagera, którą pierwotnie opisałeś i która została rozwiązana, najwyraźniej dla satysfakcji, w innych odpowiedziach. Mam jednak nadzieję, że daje to nowe narzędzie do łatwiejszego identyfikowania zmian w linii.
źródło
--word-diff
:color
,plain
, iporcelain
. Można również zmienić wyrażenie regularne dla granic słów za pomocą--word-diff-regex
. Domyślnie wydaje się, że jest\S+
. ( v2.1.1 )--color-words
wygląda na skrót--word-diff=color
, co jest miłe, gdy oglądasz różnicę, a nie ją udostępniasz.--word-diff=porcelain
bardziej niż--word-diff
dlatego,porcelain
że ustawię zmiany w osobnych liniach, jednocześnie--word-diff
wprowadzając zmiany w linii. Oddzielne linie pozwalają łatwiej zobaczyć różnice, gdy różnice są subtelne.Aby użyć mniej jako pagera i uczynić zawijanie linii trwałym, możesz po prostu włączyć opcję składania długich linii:
W ten sposób nie musisz wpisywać go, używając mniej.
Twoje zdrowie
źródło
git config --global core.pager 'less -S
Właśnie przejrzałem ten.
GIT_PAGER='less -r'
pracuje dla mnieźródło
less -R
(Właściwie używamless -eiFRSX
, który rozwiązuje również problemy z kolorem i zawijaniem wiersza.)Mac OSX: Żadna z pozostałych odpowiedzi, z wyjątkiem czyjejś „-S”, podczas gdy less działa, nie działało. Aby utrwalanie zawijania słów trwało:
źródło
-+$LESS
robi parametr? O ile git tego nie zdefiniuje, moja zmienna środowiskowa LESS nie jest nawet ustawiona.$LESS
jest ustawiona na pewną wartość (np. Przez a.login
lub a.profile
lub coś), a ta opcja, myślę, po prostu dodaje wartości domyślne, a następnie dodaje-FRX
je.$LESS
jest niezdefiniowane.Od wersji Git 1.5.3 ( wrz 2007 )
--no-pager
opcja była dostępna.Jak mogę zapobiec korzystaniu z pagera przez git diff?
Przykład
Począwszy od wersji 2.1, zawijanie jest ustawieniem domyślnym
Informacje o wersji Git v2.1
źródło
Osiem lat później znajduję lepszą odpowiedź od /superuser/777617/line-wrapping-less-in-os-x-specifically-for-use-with-git-diff :
Teraz przesuń rurkę git diff przez zgięcie, najpierw, a potem mniej: zawinięte, mniejsza wysokość strony jest poprawna, kontynuuj podświetlanie składni.
źródło
Kiedy używasz „git diff” i pokazuje on kilka stron (na końcu strony widzisz „:”), w tym przypadku możesz wpisać „-S” i nacisnąć enter. (S powinno być wielką literą). będzie przełączać fałdy długich linii.
źródło
Do tej pory nikt tego nie zauważył. Jest dość prosty do zapamiętania i nie wymaga dodatkowej konfiguracji w git config
źródło
git diff --color | less -FR
w przypadku drobnych zmian, gdy nie trzeba przewijaćMożesz po prostu przesłać dane wyjściowe git diff do większej liczby:
źródło
Nie jest to idealne rozwiązanie, ale
gitk
igit-gui
może pokazać zarówno te informacje i mają paski przewijania.źródło
wypisz bieżącą / domyślną konfigurację:
następnie zaktualizuj i pomiń -S jak:
-S: Powoduje, że linie dłuższe niż szerokość ekranu są przycinane, a nie składane.
źródło
Kiedy mam kłopoty, często uciekam się do DiffMerge. Doskonałe narzędzie do różnicowania, które ma podświetlanie w linii. Ponadto w najnowszych wersjach dodali tryb mający tryb poziomy.
Jednak nie byłem w stanie skonfigurować gita, aby go używał. Więc muszę się rozejrzeć, żeby najpierw uzyskać obie wersje pliku.
źródło