Git colores de formato bonito

81

Estoy tratando de configurar colores de formato bonitos para Git. Por lo que puedo decir, la versión 1.6.0 solo reconoce el rojo, el verde y el azul.

$ git log --pretty=format:"%Credred%Creset %Cgreengreen%Creset %Cyellowyellow%Creset %Cblueblue%Creset %Cmagentamagenta%Creset %Ccyancyan%Creset %Cwhitewhite%Creset"
red green %Cyellowyellow%Creset blue %Cmagentamagenta %Ccyancyan %Cwhitewhite

Además, ninguno de los colores funciona con el formato de color entre paréntesis.

¿Hay alguna manera de enumerar los colores de formato bonito disponibles para Git?

Desafortunadamente, esto está en una máquina SCO OpenServer 5.0.7 heredada y la última versión de Git lanzada por SCO Skunkworks fue 1.6.0.3.

James Allman
fuente
1
Si su plataforma está obsoleta, ¿por qué no descarga la última versión de git 1.8.x de git-scm.com y la compila usted mismo? Entonces sería compatible con todas las funciones más recientes.
MVP
@mvp Bueno, como dijiste, la plataforma es obsoleta, es decir, falta un entorno de compilación GNU. Estoy preparando el código fuente de la aplicación existente para la migración a Linux.
James Allman
Tenga en cuenta que Git 2.3.0 (febrero de 2015) permitirá valores de color de 24 bits y una mejor gestión de los atributos de color (negrita, subrayado, ...). Vea mi respuesta a continuación
VonC
Git 2.26 (Q1 2020) agregará el atributo "brillante" para admitir colores brillantes aixterm. Vea mi respuesta editada a continuación
VonC

Respuestas:

143

No tengo una versión antigua de gitverificar que los colores que no sean red, bluey greenson compatibles.

Aunque, una cosa que me di cuenta incluso con las versiones recientes de git(1.7.10 como utilicé) es que los colores distintos red, greeny bluenecesidad de estar dentro de paréntesis (). Para red, greeny blue, los paréntesis son opcionales.

Así que prueba esto:

git log --pretty=format:"%Credred%Creset %Cgreengreen%Creset %C(Yellow)yellow%Creset %Cblueblue%Creset %C(magenta)magenta%Creset %C(cyan)cyan%Creset %C(white)white%Creset"

La lista de colores que conozco al menos es:

normal
black
red
green
yellow
blue
magenta
cyan
white

Se puede combinar con uno de estos atributos:

bold
dim
ul
blink
reverse
italic
strike
bright  # (Git 2.26, Q1 2020, example: brightred)

Si está intentando cambiar los colores con .gitconfig, debería poder especificar dos colores: primer plano y fondo, y puede combinarlo con un atributo.

Tuxdude
fuente
Creo que tiene razón en que solo se admiten los colores primarios. El formato de color entre paréntesis no funciona en esta versión (1.6.0.3) en absoluto.
James Allman
16
espacio en primer plano, fondo y atributos separados como este% C (rojo, verde, negrita)
HexInteractive
Hay al menos otros dos atributos: cursiva y huelga como está escrito en el manual aquí git-scm.com/docs/git-config~~V~~singular~~3rd y por razones de completitud.
onemorequestion
1
@onemorequestion No hay problema. He editado la respuesta en consecuencia. Por cierto, me gustó mucho tu otra respuesta ( stackoverflow.com/a/61487052/6309 ).
VonC
40

Git 2.3.0 (febrero de 2015) permitirá (gracias a Jeff Kink ( peff) ):


parse_color: admite valores RGB de 24 bits

Algunos terminales (como XTerm) permiten especificaciones de color RGB de 24 bits completas utilizando una extensión del esquema de color ANSI normal.
Permitamos a los usuarios especificar colores RGB hexadecimales, lo que habilita la característica más importante de las decoraciones de referencia rosa fuerte :

git log --format="%h%C(#ff69b4)%d%C(reset) %s"

  • una mejor gestión de los atributos del color:

parse_color: reconoce " no$foo" para borrar el $fooatributo

Puede activar atributos de texto ANSI como "reverso" poniendo "reverso" en su especificación de color. Sin embargo, no puede pedir que desactive la marcha atrás.

Para casos comunes, esto no importa. Activaría "revertir" al comienzo de una sección coloreada y luego borraría todos los atributos con un "reinicio".

Sin embargo, es posible que desee activar algunos atributos y luego desactivar selectivamente otros. Por ejemplo:

git log --format="%C(bold ul yellow)%h%C(noul) %s"

subraya solo el hash, pero sin la necesidad de volver a especificar el resto de los atributos.

Esto también puede ayudar a programas de terceros, como contrib/diff-highlight, que desean activar o desactivar algún atributo sin interrumpir el color existente.

Tenga en cuenta que algunas especificaciones de atributos probablemente no tengan sentido (por ejemplo, " bold nobold"). No nos molestamos en marcar tales construcciones, y en su lugar dejamos que la terminal lo solucione.


Con Git 2.26 (Q1 2020), los 7 colores básicos aprendieron las contrapartes más brillantes (por ejemplo, " brightred") .

Consulte la confirmación c444f03 , la confirmación 1751b09 , la confirmación 4a28eb0 (21 de enero de 2020) por Eyal Soha (``) .
(Combinado por Junio ​​C Hamano - gitster- en el compromiso 87f17d7 , 25 de febrero de 2020)

color.c: admite colores brillantes aixterm

Firmado por: Eyal Soha

Estos colores son las variantes brillantes de los colores de 3 bits.

En lugar del rango 30-37 para el primer plano y el rango 40-47 para el fondo, viven en el rango 90-97 y 100-107, respectivamente.

La git configdocumentación ahora incluye:

Los colores básicos son aceptadas normal, black, red, green, yellow, blue, magenta, cyany white.
El primer color dado es el primer plano; el segundo es el fondo.

Todos los colores básicos excepto normaltienen una variante brillante que se puede especificar prefijando el color con bright, como brightred.

VonC
fuente
Consulte también stackoverflow.com/a/12798205/6309 : git 2.9.1 admite dos nuevos atributos: cursiva y tachado.
VonC
2
¿Sabes cómo incluir los colores RGB dentro de un alias de git? #ff69b4funciona en la línea de comando pero no en un alias, porque #comienza un comentario
Tim Malone
@TimMalone No lo probé todavía, pero la página del manual de configuración dice "Los espacios en blanco iniciales después del nombre =, el resto de la línea después del primer carácter de comentario #o ;, y los espacios en blanco finales de la línea se descartan a menos que estén entre comillas dobles . "
VonC
1
@TimMalone Pon todo el alias entre "comillas y luego #no será especial.
Tom Hale
@VonC, obtengo caracteres extraños cuando canalizo esas git logsalidas de comando a un texto o clip. Parece que esto sucede cuando se usan colores y atributos con --format. ¿Alguna idea de por qué o arreglar esto?
hIpPy
7

Comparte mi formato de registro de git:

$ git log --graph --pretty=format:'%C(magenta)%h%Creset -%C(red)%d%Creset %s %C(dim green)(%cr) %C(cyan)<%an>%Creset' --abbrev-commit

También puede agregar un alias en ~ / .gitconfig :

[alias]
    logs  = log --graph --pretty=format:'%C(magenta)%h%Creset -%C(red)%d%Creset %s %C(dim green)(%cr) %C(cyan)<%an>%Creset' --abbrev-commit

entonces puede usar el alias como lo define en ~/.gitconfig.

$ git logs
Xiaofei HAN
fuente
7
La pregunta es cómo averiguar los bonitos colores de formato de git.
Rapnar
4

Estoy usando Ubuntu 18.04 y pude usar las sugerencias de Xiaofei HAN.

Para los principiantes que intentan completar esto, tuve la mejor suerte al editar el .gitconfig.

nano ~/.gitconfig

pegar el bloque [alias] de arriba debajo del texto existente

CTRL + O (para escribir) + CTRL + X (para cerrar nano)

Después de hacer esto, para ver los bonitos colores que puede usar

git logs

utilizando

'git log' le dará la vista sin los colores,

lo mismo para 'git logs --oneline', excepto que uno mostrará la floritura en el lateral

gracias, espero que esto ayude a alguien

daniela idara
fuente
4

Aquí hay dos alias que escribí una vez que entendí la sintaxis de usar valores de color hexadecimales personalizados como se muestra en la respuesta de @VonC.

Hay cuatro versiones, la única diferencia es la directiva --graph y las versiones 'f' también le mostrarán los archivos que se agregaron, eliminaron o modificaron:

[alias]
    lg = log --graph --pretty=format:"%C(#cd9a00)%h\\%C(#0080ff)\\ <%an>\\ %C(#17b062)(%cr)\\ %d\\%C(#c0d6de)%s"    
    l1 = log --pretty=format:"%C(#cd9a00)%h\\%C(#0080ff)\\ <%an>\\ %C(#17b062)(%cr)\\ %d\\%C(#c0d6de)%s"    
    lgf = log --name-status --graph --pretty=format:"%C(#cd9a00)%h\\%C(#0080ff)\\ <%an>\\ %C(#17b062)(%cr)\\ %d\\%C(#c0d6de)%s" 
    l1f = log --name-status --pretty=format:"%C(#cd9a00)%h\\%C(#0080ff)\\ <%an>\\ %C(#17b062)(%cr)\\ %d\\%C(#c0d6de)%s"

Usé este sitio para elegir los colores exactos que quería y luego copié el valor hexadecimal de él:

https://www.colorhexa.com/

Para Windows, abra su archivo .gitconfig que reside en su carpeta "C: \ Users \ YourUserName" y agregue una sección de alias como se muestra arriba.

Espero que te gusten.

ElMatador
fuente