Git-show
O que é git-show?
O git-show é um utilitário de linha de comando usado para exibir informações expandidas de objetos Git, como blobs, trees, marcações e commits. O git-show tem um comportamento específico por tipo do objeto.
As marcações mostram a mensagem da tag e outros objetos incluídos na tag. As árvores mostram os nomes e o conteúdo dos objetos em uma árvore. Blobs mostram o conteúdo direto do blob. Os commits mostram uma mensagem de log do commit e uma saída diff das alterações no commit.
Todos os objetos Git são acessados por referências. Por padrão, o git-show age contra a referência HEAD. A referência HEAD sempre aponta para o último commit da ramificação atual. Portanto, você pode usar o git-show para exibir a mensagem de log e a saída do diff do commit mais recente.
Opções do Git-show
<object>…
Uma referência a um objeto ou uma lista de objetos pode ser passada para examinar esses objetos específicos. Se nenhum objeto explícito for passado, o padrão do git-show vai ser a referência HEAD.
--pretty[=<format>]
A opção pretty tem um valor de formato secundário que pode ser um dos seguintes: oneline, short, medium, full, fuller, email, raw e format:<string>. Se omitido, o formato padrão é médio. Cada opção de formato é um template diferente de como o Git formata a saída do show. A opção <code>oneline</code> pode ser muito útil para mostrar uma lista de commits
--abbrev-commit
Essa opção reduz o tamanho dos IDs de commit de saída. Os IDs de commit têm 40 caracteres e podem ser difíceis de visualizar em telas estreitas de terminal. Essa opção combinada com --pretty=oneline pode produzir uma saída git logmuito sucinta.
--no-abrevi-commit
Sempre mostre o ID completo do commit de 40 caracteres. Isso vai ignorar --abbrev-commit e quaisquer outras opções que abreviam IDs de commit como o formato --oneline
--oneline
Este é um atalho para usar o comando expandido --pretty=oneline --abbrev-commit
--encoding[=<encoding>]
A codificação de caracteres nas mensagens de registro do Git tem como padrão UTF-8. A opção de codificação pode alterar para uma saída de codificação de caracteres diferente. Essa opção é útil se você estiver trabalhando com o Git em ambiente com codificação diferente de caracteres, como um terminal de idioma asiático.>
--expand-tabs=<n>--expand-tabs--no-expand-tabs
Essas opções substituem os caracteres de tabulação por espaços na saída da mensagem de registro. O valor n pode ser definido para configurar em quantos caracteres de espaço as tabulações serão expandidas. Sem um valor explícito de n, as tabulações serão expandidas para 8 espaços. --no-expand-tabs é equivalente a n=0
--notes=<ref>--no-notes
O Git tem um sistema de notas que permite que metadados arbitrários de “notas” sejam anexados a objetos. Esses dados podem ser ocultados ou filtrados ao usar o git-show.
--show-signature
Essa opção vai validar que o commit tenha uma assinatura criptografada ao transmitir para um subcomando gpg.
Formatos pretty para git-show
A opção --pretty discutida acima aceita várias opções secundárias para massagear o formato da saída do git-show. Essas opções secundárias estão listadas abaixo com um modelo de exemplo
Uma linha
<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>Médio
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>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 gera o commit como armazenado no objeto. O raw vai desconsiderar --abrev e --no-abbrev e sempre vai mostrar os commits pais.
Formato
O formato permite a especificação de um formato de saída personalizado. Ele funciona de forma semelhante ao comando printf da linguagem C. A opção --pretty=format usa um valor secundário de uma string de template. O template tem acesso a variáveis de espaço reservado que vão ser preenchidas com dados do objeto commit. Esses espaços reservados estão listados abaixo:
%H: hash de commit
%h: hash de commit abreviado
%T: hash de árvore
%t: hash de árvore abreviado
%P: hashes pais
%p: hashes pais 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 de assunto limpa, adequada para um nome de arquivo
%b: corpo
%N: notas de commit
%gD: seletor de registro de referências, por exemplo, refs/stash@{1}
%gd: seletor de registro de referências reduzido, por exemplo, stash@{1}
%gs: assunto do registro de referências
%Cred: mudar a cor para vermelho
%Cgreen: mudar a cor para verde
%Cblue: mudar a cor para azul
%Creset: redefinir cor
% C (...): especificação de cores, conforme descrito em color.branch. * opção de configuração
%m: marca esquerda, direita ou limite
%n: nova linha
%%: um % bruto
%x00: imprimir um byte de um código hexadecimal
%w ([[, [,]]]): alternar a quebra de linha, como a opção -w de git-shortlog
Exemplos do git-show
git show --pretty="" --name-only bd61ad98Isso vai listar todos os arquivos tocados em um commit
git show REVISION:path/to/fileIsso vai mostrar uma versão específica de um arquivo. Substitua o REVISON por um Git sha.
git show v2.0.0 6ef002d74cbbc099e1063728cab14ef1fc49c783Isso vai exibir a tag v2.0.0 e o commit em 6ef002d74cbbc099e1063728cab14ef1fc49c783
git show commitA...commitDIsso vai emitir todos os commits no intervalo do commit A ao commit D
Resumo
git-show é um comando muito versátil para examinar objetos em um repositório Git. Ele pode ser usado para direcionar arquivos específicos em revisões específicas. Examinar um intervalo de commits com o git-show vai produzir todos os commits individuais entre o intervalo. O git-show pode ser uma ferramenta útil para criar notas de patch e rastrear alterações em um repositório.