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łem branch = 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óry auto wskazuje) kontra always? 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średnictwem less -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 .

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *