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.