oneline - git log pretty
Color en git-log (4)
Cuando ejecuta git log --decorate --pretty=oneline
la salida tendrá entradas como (HEAD, refs/published/master, master)
con coloración.
También tengo lo siguiente en mi gitconfig:
[color "branch"]
current = yellow reverse
local = yellow
remote = green
¿Cómo se replican esos colores al hacer un formato personalizado como el siguiente?
git log --decorate --stat --graph --pretty=format:"%d %Cgreen%h%Creset (%ar - %Cred%an%Creset), %s%n"
A partir de git 1.8.3 (24 de mayo de 2013), puede usar %C(auto)
para decorar %d
en la cadena de formato de git log
de git log
.
* "git log --format" specifier learned %C(auto) token that tells Git
to use color when interpolating %d (decoration), %h (short commit
object name), etc. for terminal output.)
El git log --decorate
pondrá por defecto:
- la CABEZA en cian
- las ramas remotas en rojo
- la etiqueta en verde
y se puede cambiar a través de color.decorate
config.
Pero el git log --format
no ofrece una manera de mostrar específicamente el HEAD
o los controles remotos o la bifurcación: los tres se muestran a través de %d
, con un color posible.
Actualización de mayo de 2013, como se menciona a continuación por (votada), git 1.8.3 ofrece una opción más:
git log –format
ahora tiene un token%C(auto)
que le dice a Git que use color cuando resuelve%d
(decoración),%h
(nombre de objeto de confirmación corto), etc. para la salida del terminal.
Esta entrada de blog de Atlassian comenta que esta característica es parte de varias otras centradas en el formato ( git rebase
, git count-objects
) y colores ( git branch -vv
)
Esto viene además del auto,reset
anterior auto,reset
de 1.8.2 , que deshabilita automáticamente los colores cuando la salida no se usa para un terminal1
%C(auto,blue)Hello%C(auto,reset)
Nota: git 2.4+ (Q2 2015) hará un mejor trabajo al restablecer el color alrededor de los nombres de las sucursales.
Ver commit 5ee8758 por Junio C Hamano ( gitster
) :
log --decorate
: no selog --decorate
color "commit" en el siguiente elementoEn "
git log --decorate
", vería el encabezado de confirmación así:
commit ... (HEAD, jc/decorate-leaky-separator-color)
donde "
commit ... (
" está pintado encolor.diff.commit
, "HEAD
" encolor.decorate.head
, ",
" encolor.diff.commit
, el nombre de la rama encolor.decorate.branch
y luego se cierra ")
"encolor.diff.commit
.Si quisiera pintar el HEAD y el nombre de la sucursal local con el mismo color que el texto del cuerpo (tal vez porque el cian y el verde son demasiado débiles en un terminal negro sobre blanco para ser legible), no querría tener que decir
[color "decorate"]
head = black
branch = black
porque no podría volver a usar la misma configuración en un terminal blanco sobre negro. Usted ingenuamente esperaría
[color "decorate"]
head = normal
branch = normal
para trabajar, pero desafortunadamente no.
Pinta la cadena "HEAD
" y el nombre de la rama en el mismo color que el paréntesis de apertura o la coma entre los elementos de decoración.
Esto se debe a que el código olvida restablecer el color después de imprimir el "prefijo" en su propio color.
Tenga en cuenta que git 2.5 (Q2 2015) soluciona un error:
Ver commit 429ad20 por Junio C Hamano ( gitster
) , 13 de mayo de 2015.
(Fusionada por Junio C Hamano - gitster
- en el compromiso fd70780 , 22 de mayo de 2015)
log
: no acortar los nombres de decoración demasiado tempranoLa mejora "
log --decorate
" en Git 2.4 que muestra la confirmación en la punta de la rama actual, por ejemplo "HEAD -> master
", no funcionó con --decorate = full.
Git 2.9.x + (Q3 2016) arreglará otro error y honor color=auto
para %C(auto)
Git 2.10.2 (octubre de 2016) corrige otros errores con la confirmación 82b83da (29 de septiembre de 2016) y confirma c99ad27 (17 de septiembre de 2016) por René Scharfe (``) .
(Fusionada por Junio C Hamano - gitster
- in commit 76796d4 , 28 de octubre de 2016)
pretty
: evite agregar reinicio para%C(auto)
si la salida está vacíaEmitimos una secuencia de escape para restablecer el color y el atributo para
%C(auto)
para asegurarnos de que la coloración automática se muestra como se esperaba.
Deje de hacer eso si el strbuf de salida está vacío , es decir, cuando%C(auto)
aparece al comienzo de la cadena de formato, porque entonces no hay necesidad de un restablecimiento y guardamos algunos bytes en la salida.
pretty
: dejar%C(auto)
restablecer todos los atributosRestablezca colores y atributos en
%C(auto)
para permitir un control automático total sobre ellos; de lo contrario, los atributos como negrita o inversa aún podrían estar vigentes en los marcadores de posición%C
anteriores .
Entrelazarlos entre paréntesis:
%C(...): color specification, as described in color.branch.* config option
Entonces, %C(yellow reverse)
funcionaría.
La opción de configuración log.decorate
puede activar / desactivar las decoraciones predeterminadas en los registros.
git config --global log.decorate full
Una vez hecho esto, puedes usar color.decorate.*
Para jugar con los colores