Jak skonfigurować termin Mac OS X, aby git miał kolor? [Zamknięte]


200

Widziałem demo Git online w systemie Mac OS X, w którym jest skonfigurowany do obsługi wielu kolorów.

Na przykład jego podpowiedź jest bursztynowa, jego lskatalog jest fioletowy, a jego git diffwyniki mają ~ 4 kolory (różowy, jasnozielony, czerwony, jasnożółty).

Czy możesz mi powiedzieć, jak skonfigurować terminal Mac OS X, aby to osiągnąć? Jest to zdecydowanie aplikacja terminalowa Mac OS X. nie iTerm.


3
Tyle że superuser.com jest nadal w prywatnej wersji beta, a yinglcs prawdopodobnie nie ma dostępu.
Fredrik

Czy oprócz tego, co wspomniano na blog.stackoverflow.com/2009/07/..., jest jakiś wymóg rejestracji w wersji beta Super Super User ?
las3rjock,

3
Prawdopodobnie nie, ale ilu użytkowników o tym wie? To nie jest tak, że istnieje link do tego postu na superuser.com, który użytkownik, który migruje pytanie, znajdzie, gdy tam dotrze (jeśli tak, to nie mogę go znaleźć).
Fredrik

3
Kolejne pomocne pytanie zostało zamknięte. Na szczęście nie wcześniej niż niektórzy ludzie mogli odpowiedzieć.
Ben Thurley

1
Do tej pory ustalono, że pytania Git są tematyczne; Zamknięcie @ casperOne tutaj jest złe i głosowałem za ponownym otwarciem.
Mark Amery

Odpowiedzi:


391

Odpowiedź Williama Purcella włącza tylko kolor dla polecenia „git diff”. Zrób to, aby włączyć kolory dla wszystkich poleceń git:

$ git config --global color.ui true

Dokładnie to, czego potrzebowałem. Dzięki.
jffgrdnr

1
Czysta perfekcja. Dziękuję Panu.
Brandon Buck

1
lub możesz sprawdzić ten alternatywny bogatszy wybór tutaj: gist.github.com/trey/2722934
Yannis Dran

@yinglcs, zaakceptuj już tę odpowiedź, prawda ?!
Eliran Malka

to nie działa
KansaiRobot

57

Aby wyświetlić kolor na wyjściu git diff, musisz skonfigurować git. Spróbuj uruchomić

$ git config --global color.diff true

odpowiednio ustawić swój $ HOME / .gitconfig.


William, tak! Tego mi brakowało.
avernet

dzięki, działa idealnie!
antiqe

13

Zwykle nie jest to coś, co konfiguruje się w terminalu ... Terminal nie jest świadomy tego, co pokazuje, ale wypróbuj to w swojej powłoce (jeśli używasz bash, w niektórych innych powłokach, których nie eksportujesz, ale wywołujesz setenv lub coś innego):

export CLICOLOR=1
export TERM=xterm-color

Następnie możesz użyć generatora LSCOLORS, aby skonfigurować coś, co możesz wyeksportować za pomocą czegoś takiego:

export LSCOLORS=fxfxcxdxbxegedabagacad

(powyższe powinno dać fioletowe katalogi)

Kiedy skończysz i będziesz zadowolony z wyniku, dodaj trzy wiersze do pliku / etc / bashrc lub .bashrc w katalogu domowym użytkownika.

Edycja: Upewnij się również w swoim terminalu, że pole wyboru „Wyświetl kolory ANSI” (na stronie „Tekst”) jest zaznaczone.


.bashrc też działa? Na moim Macu jest to .bash_profile, wiem, że to .bashrc w Linuksie, ale pomyślałem, że było inaczej na Macu z całą BSD (wydaje się, że LSCOLORS jest inny w Linuksie i BSD / Mac).
Jorge Israel Peña

.bashrc działa dla mnie ... I tak, jest inaczej. GLS użyje LS_COLORS (które mogą być również wytwarzane za pomocą strony połączone z)
Fredrik

Dzięki. Ale jak skonfigurować kolory takie jak „pszenica”, „fioletowy” w wierszu polecenia lub ls? lub „różowy” w wyjściu „git diff”. Dziękuję Ci.
yinglcs

Możliwe kolory to te, które można znaleźć na stronie, z którą się łączyłem, jest to część standardu, a kiedy je zdefiniowano, byłeś szczęśliwy, jeśli posiadasz terminal zdolny do wyświetlania 16 kolorów.
Fredrik

13

Tego używam w moim pliku .profile. Działa jak urok, ponieważ pozwala mi zobaczyć obecną gałąź git, a także jego stan poprzez kolor. Jeśli chcesz go zmodyfikować, pamiętaj, że ważne jest, aby unikać kodów kolorów , aby uniknąć problemów z przesuwem linii w długich liniach.

# Setting GIT prompt
c_cyan=`tput setaf 6`
c_red=`tput setaf 1`
c_green=`tput setaf 2`
c_sgr0=`tput sgr0`

branch_color ()
{
    if git rev-parse --git-dir >/dev/null 2>&1
    then
        color=""
        if git diff --quiet 2>/dev/null >&2 
        then
            color=${c_green}
        else
            color=${c_red}
        fi
    else
        return 0
    fi
    echo -n $color
}

parse_git_branch ()
{
    if git rev-parse --git-dir >/dev/null 2>&1
    then
        gitver="["$(git branch 2>/dev/null| sed -n '/^\*/s/^\* //p')"]"
    else
        return 0
    fi
echo -e $gitver
}

#It's important to escape colors with \[ to indicate the length is 0
PS1='\u@\[${c_red}\]\W\[${c_sgr0}\]\[\[$(branch_color)\]$(parse_git_branch)\[${c_sgr0}\]$ '

Który plik .profile wspomniałeś?
Darshan Puranik

@DarshanPurani, chciałem powiedzieć .profileplik w moim $ bash
Marc M

2

Otwórz aplikację terminalu, a następnie otwórz okno dialogowe preferencji za pomocą menu (Terminal -> Preferencje) lub naciskając Command+ ,. Po otwarciu okna dialogowego preferencji wybierz styl terminala z panelu po lewej stronie, wybierz Tekst z paska przycisków, a następnie upewnij się, że pole wyboru „Wyświetl kolory ANSI” jest zaznaczone.

Umożliwi to kolory na terminalu. Aby uzyskać kolory w danych wyjściowych na terminalu, musisz osadzić polecenia kolorów ANSI w danych wysyłanych do terminala. Sposób wykonania zależy od poleceń. Na przykład (jak pokazano powyżej) lspolecenie ma opcję kolorów. Aby uzyskać kody kolorów, wyszukaj w Google hasło „ansi color”.


Pamiętaj, że pytanie jest już zamknięte jako nie na temat. :)
Ryan Kohn

0

W przypadku kolorowego wyjścia ls poleciłbym zainstalowanie coreutils GNU i użycie tej wersji ls. Dla każdej wersji ls musisz przekazać do niej poprawną flagę, którą jest --color dla wersji GNU lub -G dla standardowej wersji OS X. Możesz więc zrobić coś takiego

alias ls='ls --color'

w twoim .bashrc.

Aby pokolorować swój monit, musisz użyć poprawnych kodów kolorów dla twojego terminala, ale mój używa

PROMPT="$(print '%{\e[0;38m%}%{\e[1;1m%]%}[%m:%c] %n%%%{\e[0m%}') "

produkować

[hostname:directory] username%

w odważnej bieli.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.