Libro abierto con el icono de una rama de Git y el de una nube

Git show

¿En qué consiste git-show?

git-show es una herramienta de línea de comandos que se utiliza para ver detalles ampliados en objetos de Git, como blobs, árboles, etiquetas y commits. git-show presenta un comportamiento específico para cada tipo de objeto.

Las etiquetas muestran el mensaje de la etiqueta y otros objetos incluidos en ella; los árboles muestran los nombres y el contenido de los objetos incluidos en ellos; los blobs muestran el contenido directo de un blob; y los commits muestran un mensaje de registro del commit y el resultado de la diferencia de los cambios en este.

Se accede a todos los objetos de Git mediante referencias. De forma predeterminada, git-show actúa contra la referencia HEAD. La referencia HEAD siempre dirige al último commit de la rama actual. Por lo tanto, puedes usar git-show para mostrar los mensajes de registro y el resultado de la diferencia del último commit.

Opciones de git-show

<object>…
Se puede utilizar una referencia a un objeto o a una lista de objetos para examinar estos objetos específicos. Si no se utiliza ningún objeto explícito, git-show selecciona de forma predeterminada la referencia HEAD.

--pretty[=<format>]
La opción pretty adopta valores de formato secundarios que pueden ser: oneline, short, medium, full, fuller, email, raw, y format:<string>. Si se omite, el formato predeterminado es medium. Cada opción de formato constituye una plantilla diferente para la forma en la que Git da formato al resultado. La opción <code>oneline</code> puede resultar muy útil para mostrar una lista de commits.

--abbrev-commit
Esta opción abrevia la longitud de los ID de commit resultantes. Estos ID tienen 40 caracteres de longitud y puede ser difícil visualizarlos en las pantallas de terminales estrechas. Esta opción combinada con --pretty=oneline puede producir un resultado muy conciso de git log.

--no-abbrev-commit
Muestra siempre los 40 caracteres del ID de commit. Ignorará --abbrev-commit y cualquier otra opción que abrevie los ID de commit, como el --oneline format.

--oneline
Este es un acceso rápido para hacer uso del comando expandido --pretty=oneline --abbrev-commit.

--encoding[=<encoding>]
La codificación de caracteres predeterminada en los mensajes de registro de Git es UTF-8. Esta opción de codificación puede cambiarse por otra diferente, lo que puede resultar útil si trabajas con Git en un entorno con diferente codificación de caracteres, como en un terminal de lengua asiática.

>--expand-tabs=<n>
--expand-tabs
--no-expand-tabs

Estas opciones sustituyen los caracteres de tabulación con espacios en los mensajes de registro de salida. El valor n se puede configurar para cambiar el número de caracteres de espacio que se expanden las tabulaciones. Sin un valor n explícito, las tabulaciones se expanden 8 espacios. --no-expand-tabs (para que las tabulaciones no se expandan) equivale a n=0.

--notes=<ref>
--no-notes

Git tiene un sistema de notas que permite vincular los metadatos arbitrarios de 'nota' a objetos. Estos datos se pueden ocultar o filtrar con git-show

--show-signature
Esta opción confirmará que el commit se firma con una firma encriptada pasándolo a un subcomando gpg.

Formatos pretty para git-show

La opción --pretty mencionada anteriormente acepta diferentes opciones secundarias para manipular el formato de salida de git-show. A continuación, se enumeran estas opciones secundarias con ejemplos de plantillas.

  • oneline
    <sha1> <title line>

Oneline trata de compactar la mayor cantidad de información posible en una sola línea.

  • short
    commit <sha1>
    Author: <author>
    <title line>
  • medium
    commit <sha1>
    Author: <author>
    Date: <author date>
    <title line>
    <full commit message>
  • full
    commit <sha1>
    Author: <author>
    Commit: <committer>
    <title line>
    <full commit message>
  • fuller
    commit <sha1>
    Author: <author>
    AuthorDate: <author date>
    Commit: <committer>
    CommitDate: <committer date>
    <title line>
    <full commit message>
  • email
    From <sha1> <date>
    From: <author>
    Date: <author date>
    Subject: [PATCH] <title line>
    <full commit message>
  • raw
    El formato raw ignora otras opciones de formato directo utilizadas en git-show y devuelve el commit tal y como se almacenó en el objeto. Raw obviará --abrev y --no-abbrev y siempre mostrará los commits principales.
  • format:
    Format permite la especificación de un formato de salida personalizado. Funciona de forma similar al comando printf del lenguaje C. La opción--pretty=format adopta un valor secundario de una cadena de plantilla. La plantilla tiene acceso a variables de marcadores de posición que llena de datos un objeto de commit. A continuación, se enumeran estos marcadores de posición:

    %H: hash del commit
    %h: hash del commit abreviado
    %T: árbol de hash
    %t: árbol de hash abreviado
    %P: hashes principales
    %p: hashes principales abreviados
    %an: nombre del autor
    %aN: nombre del autor 
    %ae: correo electrónico del autor
    %aE: correo electrónico del autor
     
    %ad: fecha de creación (el formato respeta la opción --date=)
    %aD: fecha de creación, estilo RFC2822
    %ar: fecha de creación, relativa
    %at: fecha de creación, marca de tiempo UNIX
    %ai: fecha de creación, formato ISO 8601
    • %cn: nombre del confirmador
    %cN: nombre del confirmador 
    %ce: correo electrónico del confirmador<br /> • %cE: correo electrónico del confirmador 
    %cd: fecha de confirmación
    %cD: fecha de confirmación, estilo RFC2822
    %cr: fecha de confirmación, relativa
    %ct: fecha de confirmación, marca de tiempo UNIX
    %ci: fecha de confirmación, formato ISO 8601
    %d: nombres de referencia, como la opción --decorate de git-log(1)
    %e: codificación
    %s: asunto
    %f: línea de asunto depurada, adecuada para el nombre de archivo
    • %b: cuerpo
    %N: notas de commit
    %gD: selector de reflog, por ejemplo, refs/stash@{1}
    %gd: selector de reflog abreviado, por ejemplo, stash@{1}
    %gs: asunto de reflog
    %Cred: cambiar color a rojo
    %Cgreen: cambiar color a verde
    %Cblue: cambiar color a azul
    %Creset: restablecer color
    %C(...): especificación del color, como se describe en la opción de configuración color.branch.*
    %m: marca a la izquierda, derecha o en el límite
    %n: nueva línea
    %%: un % sin formato
    %x00: imprimir un byte desde un código hex
    %w([<w>[,<i1>[,<i2>]]]): cambiar el ajuste de línea, como la opción -w de git-shortlog

Ejemplos de git-show

git show --pretty="" --name-only bd61ad98

Esta opción enumerará los archivos que se han tocado en un commit.

git show REVISION:path/to/file

Esto mostrará una versión determinada de un archivo. Sustituye REVISION por un sha de Git.

git show v2.0.0 6ef002d74cbbc099e1063728cab14ef1fc49c783

Esta mostrará la etiqueta v2.0.0 y el commit en 6ef002d74cbbc099e1063728cab14ef1fc49c783

git show commitA...commitD

Esta generará todos los commits de la serie, desde commitA hasta commit D.

Resumen

git-show es un comando muy versátil para examinar objetos de un repositorio de Git. Se puede utilizar para dirigirse a archivos específicos en revisiones específicas. Si examinas una serie de commits con git-show, se extraerán todos los commits individuales de esa serie. git-show puede convertirse en una herramienta muy útil para crear notas de patch y supervisar los cambios en un repositorio.