¿Cómo puedo mostrar el nombre de las ramas en `git log`?

216

¿Cómo puedo mostrar el nombre de las ramas en la salida de git log?

Por ejemplo, git log --graph --allobtengo una buena descripción de los commits, pero me confundo qué línea es master y cuál es mi rama, por ejemplo.

vdboor
fuente
1
Prácticamente, mostrar los nombres de los encabezados o etiquetas vinculados parece que ya está hecho de forma predeterminada desde alguna gitactualización reciente .
underscore_d

Respuestas:

321

Prueba la opción de decorar.

git log --graph --all --decorate

Anota confirmaciones a las que apuntan etiquetas o ramas.

CB Bailey
fuente
42
Con --prettyusted puede usar %ddonde desee las 'decoraciones'.
CB Bailey
44
@noli: ¿Qué esperas que muestre? No todos los commits son consejos de rama.
CB Bailey
99
@noli git solo almacena el nombre de la sucursal en la confirmación más reciente de la sucursal (la sugerencia). Todos los commits en la historia son iguales y anónimos. Si desea ramas con nombre para que cada confirmación lleve el nombre de la rama, puede usar Mercurial.
Sampo Smolander
77
@CharlesBailey: me gustan los colores de los árbitros git log --graph --all --oneline --decorate. Tengo un alias git graphque usa --pretty(para mostrar también otras cosas, como autor y fecha), pero %dno me da los colores --decorate. Uso el amarillo para todas mis referencias por ahora, ¿sabes cómo puedo dejar que --prettyla %dcadena herede los colores --decorate?
Gauthier
3
@Gauthier Si desea tener colores predeterminados en sus --prettyformatos, agregue %C(auto)antes del elemento lo que debe colorearse. Por ejemplogit log --pretty=format:"%cd %h %cn %s %C(auto)%d"
Radon8472
7

Estaba buscando algo similar a esto, pero quería saber en qué rama se realizó un cambio. Esperemos que esta respuesta sea útil para otros también.

Estoy investigando un riesgo con el blackboxcifrado, donde un repositorio y sus ramas / etiquetas pueden adminsdejar de estar disponibles cuando suficientes usuarios abandonan un proyecto y el keyringsdirectorio no se ha basado religiosamente en el maestro)

Encontré que la respuesta a continuación fue útil cuando el keyringsdirectorio no se actualizó desde el maestro ...

Básicamente, agregar --sourceera lo que necesitaba para mostrar las ramas / etiquetas. Agregar --name-onlytambién mostrará qué archivo se cambió realmente.

cd /path/to/repo-that-uses-blackbox-encryption
git log --graph --all --decorate --source --name-only keyrings

Otra respuesta útil: cómo mostrar git log con el nombre de la sucursal

Control de Android
fuente
Para mí, --sourcesolo da HEADpara todos los commits. En combinación con --all, esto parece distinguir entre diferentes ramas, pero la información que se muestra no es lo que esperaba: para las confirmaciones que hice master, en lugar de obtener refs/heads/master, obtengo alguna rama privada ( refs/remotes/origin/…). Sospecho que las fusiones y / o nuevas sucursales hacen que se Gitpierda información del historial.
vinc17
En lugar de --all, puedo filtrar las ramas con --branches --remotes=<pattern>, pero tan pronto como se fusionan dos ramas, Git ya no tiene la información sobre cuál tenía la confirmación cuando se hizo.
vinc17
1

Si está usando oh-my-zsh como su terminal, entonces hay un montón de alias git disponibles. Todo lo cual se puede ver en su repositorio oh-my-zsh / plugins / git . Si no usa este terminal, simplemente puede tomar los alias y pegar los que desee en su propio entorno.

La respuesta aceptada presenta el git log --graph --all --decoratecomando, que está disponible como el glggaalias en oh-my-zsh.

Personalmente, prefiero el glodsalias que se traduce en:

git log --graph --pretty='%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%ad) %C(bold blue)<%an>%Creset' --date=short
Simón
fuente