Czy istnieje sposób na kolorowe wyjście dla git (lub dowolnego polecenia)?
Rozważ:
baller@Laptop:~/rails/spunky-monkey$ git status # On branch new-message-types # Changes not staged for commit: # (use "git add <file>..." to update what will be committed) # (use "git checkout -- <file>..." to discard changes in working directory) # # modified: app/models/message_type.rb # no changes added to commit (use "git add" and/or "git commit -a") baller@Laptop:~/rails/spunky-monkey$ git add app/models
I
baller@Laptop:~/rails/spunky-monkey$ git status # On branch new-message-types # Changes to be committed: # (use "git reset HEAD <file>..." to unstage) # # modified: app/models/message_type.rb #
Dane wyjściowe wyglądają tak samo, ale informacje są zupełnie inne: plik przeszedł z niestopowego do przemieszczonego do zatwierdzenia.
Czy jest sposób pokolorować wyjście? Na przykład pliki, które nie znajdują się na poczekalni, mają kolor czerwony, a pliki w poczekalni są zielone?
Lub nawet Changes not staged for commit:
na czerwony i # Changes to be committed:
na zielony?
Pracujesz w Ubuntu.
EDYCJA: Google znalazło tę odpowiedź, która działa świetnie: git config --global --add color.ui true
.
Czy jest jednak jakieś bardziej ogólne rozwiązanie dodawania koloru do wyjście polecenia?
Komentarze
- Chcesz czegoś, co ubarwia wszystkie wyniki poleceń? Skąd miałoby wiedzieć, które części pokolorować?
- Myślę, że gdyby istniał sposób skonfigurowania go za pomocą wyrażenia regularnego: każdy kolor mógłby mieć wyrażenie początkowe. I może istnieć domyślne wyrażenie regularne koloru, które wyłącza wszystkie kolory. A jeśli pojawi się tekst ” foo „, wyświetl go w określonym kolorze …
Odpowiedź
Możesz utworzyć sekcję [color]
w swoim ~/.gitconfig
z np następującą treść
[color] diff = auto status = auto branch = auto interactive = auto ui = true pager = true
Możesz również dokładnie określić, co chcesz pokolorować w jaki sposób, np.
[color "status"] added = green changed = red bold untracked = magenta bold [color "branch"] remote = yellow
Mam nadzieję, że to Ci pomoże. I oczywiście potrzebujesz terminala obsługującego kolor.
Komentarze
- Myślę, że warto umieścić git config –global color.ui auto (odpowiedź @Evgeny ') u góry twojej … Myślę, że ' jest tym, czym jest większość ludzi szukam. ' zagłosowałem za jednym i drugim … Ja ' mówię tylko, ze względu na internet, który tu przychodzi, myślę, że wiele osób chce tylko tej prostej wkładki. Tym lepiej, jeśli to dostaną, a także Twój dodatkowy dobroć.
- To zadziałało idealnie dla mnie – w sekcji
[color "status"]
dodałembranch = yellow
. - możesz dodać sekcję [color] do projektu ' s .git / config.
- A Ty może po prostu ustawić zmienną konfiguracyjną dla pojedynczego wywołania polecenia git: stackoverflow.com/a/18304605/134044
Odpowiedź
Prawdopodobnie chcesz użyć
git config --global color.ui auto
auto
część mówi, że git będzie próbował używać koloru tylko na terminalach, które go obsługują, a nie otrzymasz sekwencji ANSI, jeśli przekierujesz wyjście poleceń git na przykład do pliku. Ustawienie go na true
jest takie samo jak auto
i jest to również ustawienie domyślne od wersji Git 1.8.4.
color.ui
to meta konfiguracja, która zawiera wszystkie różne color.*
konfiguracje dostępne za pomocą poleceń git.
To jest wyjaśnione dogłębnie w git help config
.
Komentarze
- Czy możesz wyjaśnić różnicę między color.ui
true
(na któryauto
wskazuje) kontraalways
? Przeczytałem dokumenty , ale nadal nie widzę różnicy. - @chharvey
color.ui = auto
+git diff | less
– brak kolorów,color.ui = always
+git diff | less
– kolorowe wyjście.LESS=-R
jest domniemane.
Odpowiedź
git config --global color.ui auto git config --global color.branch auto git config --global color.status auto
Komentarze
- Do Twojej wiadomości, tylko to działało z wersją git 1.5.2.1, inne odpowiedzi nie ' t.
Odpowiedź
Zaakceptowana odpowiedź to najczęściej spotykane rozwiązanie. Jeśli z jakiegoś powodu nie musisz na stałe zmieniać konfiguracji, co robi to rozwiązanie, możesz nadpisać konfigurację dla pojedynczego polecenia git:
git -c color.ui=always <usual git command and options>
Na przykład :
git -c color.ui=always status git -c color.ui=always diff
Przetestowano: obsługiwane na git 2.4.6, nie obsługiwane na git 1.7.1.
Komentarze
- Dla każdego, kto próbuje uzyskać kolor podczas przekierowywania do
less
, tak jak ja przed chwilą, możesz ustawićless
przekaż kolorowe znaki zmiany znaczenia do terminala za pośrednictwemless -R
. - Kiedy dodano tę funkcję?
Odpowiedź
git config --global color.ui always git config --global color.branch always git config --global color.diff always git config --global color.interactive always git config --global color.status always git config --global color.grep always git config --global color.pager true git config --global color.decorate always git config --global color.showbranch always
Odpowiedź
lub wyłącz całą / większość kolorowania za pomocą:
git config --global color.ui false git config --global color.branch false git config --global color.diff false git config --global color.interactive false git config --global color.status false git config --global color.grep false git config --global color.pager false git config --global color.decorate false git config --global color.showbranch false
Komentarze
- OP nie ' nie chciałem wyłączyć kolorów, zamiast włączyć kolory . W PO określił, jak to zrobić w
git
i chce, jak to zrobić w bardziej globalnym sensie. Jeśli znasz taką metodę, edytuj swoją odpowiedź, aby to wyjaśnić. - czasami ludzie szukają czegoś blisko związanego, ale nieco innego – ale dziękuję za głos przeciw.
- Podobało mi się it @theRiley
Odpowiedź
Dla kolorowego git diff
piped do less
, to działa:
git -c color.diff=always diff [...] | less -R
Odpowiedź
Możesz to zrobić za pomocą dowolnego kolorowania danych wyjściowych polecenia . W większości przypadków działa, ale nie znalazłem sposobu obejścia błędu, w którym monity oczekujące na dane wejściowe nie są wyświetlane i nie można po prostu wpisać znanych potrzebnych danych wejściowych i nacisnąć Enter, aby kontynuować w każdym przypadku.
Przykład ~/.acoc.conf
dla git
:
# git [git/ae] /.*(error:.*)/ red+bold /.*(warning:.*)/ yellow /.*(hint:.*)/ magenta /.*(up-to-date).*/ green+bold /.*(nothing to commit).*/ green /^(\+.*)/ green /^(-.*)/ red
. . który działa dobrze razem z alias git="acoc git"
w .bash_profile
.
Komentarze
- Czy możesz udostępnić swoją konfigurację dla
acoc
? - Nvm, łatwo było napisać. 🙂 Dodano do odpowiedzi.
Odpowiedź
Wiem, że post ma cztery lata, ale nikt nie odpowiedział z mojego obozu, daltonista. Jeśli możesz rozróżniać kolory, ignorować mój post.
„git status” na przykład wyświetla tekst, który jest biały na tle / czarny na białym tle (czytelny), ciemnoszary dla usuniętego (nieczytelny na czarnym tle, ale czytelny na tle białe tło) i średni szary dla a dded (jęczmień czytelny na czarnym tle, nieczytelny na białym tle). Kiedyś przełączałem tło mojego okna terminala na / z białego / czarnego, aby móc odczytać nieczytelny tekst. Prostym rozwiązaniem jest więcej:
git status | more
Dzięki temu cały tekst będzie czytelny na standardowym oknie terminala na białym lub czarnym tle.
Komentarze
- Możesz także zmienić konfigurację, aby domyślnie nie ustawiać żadnego koloru (
color.ui = never
).
Odpowiedź
Aby pokolorować wynik git diff
, możesz dodać sekcję color.diff do ~ / .gitconfig. Na przykład:
[color "diff"] new = bold italic 154 old = bold italic 196
Tutaj 154
i 196
to ANSI 256-kolorowe kody. Aby uzyskać więcej informacji, zobacz man git config
.
Odpowiedź
Spójrz na https://github.com/dandavison/delta do kolorowego podświetlania składni wyjścia (git) diff i kolorowego podświetlania dodanych / usuniętych linii w diff .