¿Cómo configurar el término de Mac OS X para que git tenga color? [cerrado]


200

He visto una demostración en línea de Mac OS X git en la que está configurada para tener múltiples colores.

Por ejemplo, su mensaje es ámbar, su lsdirectorio es púrpura y su git diffsalida tiene ~ 4 colores (rosa, verde claro, rojo, amarillo pálido).

¿Me puede decir cómo puedo configurar el terminal Mac OS X para lograr eso? Definitivamente es Mac OS X Terminal.app, no iTerm.


3
Excepto que superuser.com todavía está en beta privada y yinglcs probablemente no tiene acceso.
Fredrik el

¿Existe algún requisito de suscripción beta de Superusuario además de lo que se menciona en blog.stackoverflow.com/2009/07/… ?
las3rjock el

3
Probablemente no, pero ¿cuántos usuarios saben sobre eso? No es que haya un enlace a esa publicación en superuser.com que el usuario que migra la pregunta encontrará cuando llegue allí (si es así, no puedo encontrarlo).
Fredrik

3
Otra pregunta útil cerrada. Afortunadamente, no antes de que algunas personas pudieran responder.
Ben Thurley

1
Ya está bien establecido que las preguntas de Git son sobre el tema; El cierre de @ casperOne aquí es incorrecto, y me votaron para volver a abrir.
Mark Amery

Respuestas:


391

La respuesta de William Purcell solo habilita el color para el comando 'git diff'. Haga esto para habilitar colores para todos los comandos git:

$ git config --global color.ui true

Justo lo que necesitaba. Gracias.
jffgrdnr

1
Pura perfección. Gracias Señor.
Brandon Buck el

1
o puede consultar esta alternativa más rica aquí: gist.github.com/trey/2722934
Yannis Dran

@yinglcs, acepta esta respuesta ya, ¿quieres?
Eliran Malka

esto no funciona
KansaiRobot

57

Para mostrar el color en la salida de git diff, debe configurar git. Intenta correr

$ git config --global color.diff true

para configurar su $ HOME / .gitconfig adecuadamente.


William, si! Esto es lo que me faltaba.
avernet

gracias, funciona perfecto!
antiqe

13

Normalmente no es algo que configure el terminal para hacer ... El terminal no es consciente de lo que está mostrando, pero intente esto en su shell (si está usando bash, en algunos otros shells que no exporta pero llame a setenv o algo más):

export CLICOLOR=1
export TERM=xterm-color

Luego puede usar el generador LSCOLORS para configurar algo que puede exportar usando algo como:

export LSCOLORS=fxfxcxdxbxegedabagacad

(lo anterior debería darle directorios morados)

Cuando haya terminado y esté satisfecho con el resultado, agregue las tres líneas a su / etc / bashrc o al archivo .bashrc en el directorio de inicio de su usuario.

Editar: Además, en su terminal, asegúrese de que la casilla de verificación "Mostrar colores ANSI" (en la página "Texto") esté marcada.


.bashrc también funciona? En mi mac es .bash_profile, sé que es .bashrc en Linux, pero pensé que era diferente en mac con todo el tema BSD (Parece que LSCOLORS también es diferente en Linux y BSD / Mac).
Jorge Israel Peña el

.bashrc funciona para mí ... Y sí, es diferente. gls usa LS_COLORS (que también se puede generar usando la página vinculada)
Fredrik el

Gracias. Pero, ¿cómo se puede configurar en colores como 'trigo', 'púrpura' en el indicador o en la salida ls? o 'rosa' en la salida 'git diff'. Gracias.
yinglcs

Los colores posibles son los que puede encontrar en el sitio al que me vinculé, es parte del estándar y cuando lo definieron, estaba contento si tenía un terminal capaz de mostrar 16 colores.
Fredrik

13

Esto es lo que uso en mi archivo .profile. Funciona a las mil maravillas porque me permite ver la rama git actual, así como su estado a través del color. Si desea modificarlo, tenga en cuenta que es importante escapar de los códigos de color para evitar problemas de avance de línea en líneas largas.

# 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}\]$ '

¿Qué archivo .profile mencionaste?
Darshan Puranik

@DarshanPurani, quise decir el .profilearchivo en mi $ bash
Marc M

2

Abra la aplicación de terminal, luego abra el diálogo de preferencias a través del menú (Terminal -> Preferencias) o presionando Command+ ,. Una vez que se abre el diálogo de preferencias, seleccione el estilo del terminal en el panel de la izquierda, seleccione Texto en la barra de botones, luego asegúrese de que la casilla de verificación "Mostrar colores ANSI" esté marcada.

Eso habilitará los colores en el terminal. Para obtener colores en la salida del terminal, deberá incrustar comandos de color ANSI en los datos que se envían al terminal. Cómo se hace esto depende de los comandos. Por ejemplo (como se mostró arriba) el lscomando tiene una opción de colores. Para los códigos de color, busque en Google "ansi color".


Tenga en cuenta que la pregunta ya está cerrada como fuera de tema. :)
Ryan Kohn

0

Para la salida de color ls, recomendaría instalar gnu coreutils y usar esa versión de ls en su lugar. Para cualquier versión de ls, deberá pasarle el indicador correcto, que es --color para la versión gnu o -G para la versión estándar de OS X. Entonces puedes hacer algo como

alias ls='ls --color'

en tu .bashrc.

Para colorear su solicitud, deberá usar los códigos de colores correctos para su terminal, pero el mío usa

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

para producir

[hostname:directory] username%

en negrita blanco

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.