Livro aberto com ramificação e nuvem Git

Git Show

O que é git-show?

git-show é um utilitário de linha de comando usado para exibir detalhes expandidos de objetos Git, como blobs, trees, tags e commits. O git-show tem um comportamento específico para cada tipo de objeto.

Tags mostram a mensagem da tag e outros objetos incluídos nela. Trees mostram os nomes e o conteúdo de objetos em uma árvore. Blobs mostram o conteúdo direto do blob. Commits mostram uma mensagem de log de commit e uma saída de comparação das alterações no commit.

Objetos Git são todos acessados por referências. Por padrão, o git-show atua contra a referência HEAD. Essa referência sempre aponta para o último commit da ramificação atual. Portanto, você pode usar o git-show para exibir a mensagem do log e a saída de comparação do commit mais recente.

Opções do Git-show

<object>…
Uma referência a um objeto ou lista de objetos pode ser passada para examinar esses objetos específicos. Se nenhum objeto específico for passado, o git-show toma a referência HEAD como padrão.

--pretty[=]
A opção pretty assume um desses valores de formato secundário: oneline, short, medium, full, fuller, email, raw e format:<string>. Se omitido, o formato toma medium como padrão. Cada opção de formato é um template diferente de como o Git formata a exibição de saída. A opção <code>oneline</code> pode ser muito útil para exibir uma lista de commits

--abbrev-commit
Essa opção encurta o comprimento dos IDs dos commits de saída. Os IDs de commit têm 40 caracteres e pode ser difícil visualizá-los em telas de terminais pequenos. Combinada com --pretty=oneline, essa opção pode gerar uma saída de git log bastante sucinta.

--no-abbrev-commit
Sempre mostra o ID de commit de 40 caracteres inteiro. Ela vai ignorar o --abbrev-commit e quaisquer outras opções que abreviem IDs de commit, como a --oneline format

--oneline
É um atalho para usar o comando expandido --pretty=oneline --abbrev-commit

--encoding[=]
A codificação de caracteres nas mensagens do Git log toma UTF-8 como padrão. A opção de codificação pode mudar para uma saída de codificação de caracteres diferente. Ela é útil se você estiver trabalhando com Git em um ambiente com codificação de caracteres diferente, como um terminal em um idioma asiático.

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

Essas opções substituem caracteres de tabulação por espaços na saída de mensagens de log. O valor n define a quantidade de caracteres de espaço que as tabulações expandem. Sem um valor n explicitado, as tabulações vão expandir até oito espaços. --no-expand-tabs equivale a n=0

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

O Git tem um sistema de notificação que permite que metadados de "notificação" arbitrários sejam anexados a objetos. Esses dados podem ser ocultados ou filtrados com o git-show

--show-signature
Essa opção vai validar que o commit tenha uma assinatura criptografada ao passá-lo para um subcomando gpg.

Formatos pretty para git-show

A opção --pretty discutida acima aceita diversas opções secundárias para adequar o formato da saída do git-show. Essas opções secundárias estão listadas abaixo com um template de exemplo

  • oneline
    <sha1> <title line>

Oneline tenta compactar o máximo possível de informações em uma única linha

  • 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
    O formato raw ignora outras opções de formatação direta passadas para o git-show e emite o commit conforme armazenado no objeto. O raw vai desconsiderar --abrev e --no-abbrev e vai sempre mostrar os commits pai.
  • format:
    Format permite a especificação de um formato de saída personalizado. O funcionamento é parecido com o do comando printf da linguagem C. A opção --pretty=format assume um valor secundário da string do template. O template tem acesso a variáveis de espaço reservado que vão ser preenchidas com dados do objeto do commit. Esses espaços reservados estão listados abaixo:

    %H: código do commit
    %h: código abreviado do commit
    %T: código da tree
    %t: código abreviado da tree
    %P: códigos pai
    %p: códigos pai abreviados
    %an: nome do autor
    %aN: nome do autor 
    %ae: e-mail do autor
    %aE: e-mail do autor 
    %ad: data do autor (o formato respeita a opção --date=)
    %aD: data do autor, estilo RFC2822
    %ar: data do autor, relativa
    %at: data do autor, carimbo de data/hora UNIX
    %ai: data do autor, formato ISO 8601
    %cn: nome do committer
    %cN: nome do committer 
    %ce: e-mail do committer
    %cE: e-mail do committer 
    %cd: data do committer
    %cD: data do committer, estilo RFC2822
    %cr: data do committer, relativa
    %ct: data do committer, carimbo de data/hora UNIX
    %ci: data do committer, formato ISO 8601
    %d: nomes de referência, como a opção --decorate do git-log(1)
    %e: codificação
    %s: assunto
    %f: linha do assunto corrigida, apropriada para um nome de arquivo
    %b: corpo
    %N: notificações de commit
    %gD: seletor de reflog, ex. refs/stash@{1}
    %gd: seletor de reflog encurtado, ex. stash@{1}
    %gs: assunto do reflog
    %Cred: trocar cor para vermelho
    %Cgreen: trocar cor para verde
    %Cblue: trocar cor para azul
    %Creset: redefinir cor
    %C(...): especificação da cor, como descrito na opção de configuração color.branch.*
    %m: marca de limite, esquerda ou direita
    %n: nova linha
    %%: uma % bruta
    %x00: imprimir um byte de um código hexadecimal
    %w([<w>[,<i1>[,<i2>]]]): ativar quebra de linha automática, como a opção -w do git-shortlog

Exemplos do git-show

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

Isso vai listar todos os arquivos tocados em um commit

git show REVISION:path/to/file

Isso vai mostrar uma versão específica de um arquivo. Substitua o REVISON com um Git sha.

git show v2.0.0 6ef002d74cbbc099e1063728cab14ef1fc49c783

Isso vai exibir a tag v2.0.0 e o commit em 6ef002d74cbbc099e1063728cab14ef1fc49c783

git show commitA...commitD

Isso vai emitir todos os commits no intervalo do commit A ao commit D

Resumo

O git-show é um comando muito versátil para examinar objetos em um repositório Git. Ele pode ser usado para direcionar arquivos específicos para revisões específicas. Examinar um intervalo de commits com o git-show vai emitir todos os commits individuais nesse intervalo. O git-show pode ser uma ferramenta útil para criar observações de patch e rastrear alterações em um repositório.