git show
Aprenda o comando git show para inspecionar commits, tags e arquivos em qualquer revisão. Veja opções úteis e exemplos.
Definição
O comando git show exibe detalhes sobre um objeto Git — na maioria das vezes um commit. Para um commit, ele imprime a mensagem do log junto com o diff completo das alterações, oferecendo uma visão completa de uma única revisão. Ele também pode revelar tags, árvores e o conteúdo de um arquivo como estava em qualquer ponto da história.
Use git show quando você já sabe qual objeto lhe interessa e deseja ver tudo sobre ele em uma única tela. Esta página aborda como exibir commits, interpretar a saída, visualizar um arquivo em qualquer revisão, inspecionar tags, as opções mais úteis e como o comando difere de git log e git diff.
Exibindo um commit
Sem argumentos, git show exibe o commit mais recente (HEAD): seu autor, data, mensagem e as alterações que ele introduziu.
git showPara inspecionar qualquer outro commit, passe seu hash, o nome de um branch ou uma referência relativa:
git show a1b2c3d # by abbreviated hash
git show HEAD~2 # the commit two steps before HEAD
git show main # the tip of the main branch
git show HEAD@{1} # where HEAD pointed one move ago (via the reflog)A saída combina o que você obteria de git log e git diff para aquele commit específico.
Interpretando a saída
Uma exibição típica de commit contém um cabeçalho seguido de um diff unificado:
commit a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0
Author: Jane Dev <[email protected]m>
Date: Mon Jun 9 14:02:11 2025 +0200
Fix off-by-one error in pagination
diff --git a/src/page.js b/src/page.js
index 83db48f..f735c2e 100644
--- a/src/page.js
+++ b/src/page.js
@@ -10,7 +10,7 @@ function pageStart(page, perPage) {
- return page * perPage;
+ return (page - 1) * perPage;
}O cabeçalho identifica o commit, quem o criou e quando. O bloco diff --git mostra a alteração: linhas que começam com - foram removidas, linhas que começam com + foram adicionadas, e o cabeçalho de bloco @@ ... @@ indica os números de linha afetados. Este é o mesmo formato de patch exibido por git diff.
Visualizando um arquivo em uma revisão específica
Um recurso poderoso é imprimir um arquivo exatamente como ele estava em um determinado commit, sem fazer nenhum checkout. Use a sintaxe <commit>:<caminho>:
git show HEAD~3:src/index.jsIsso envia a versão antiga de index.js para o terminal, deixando sua árvore de trabalho intocada — ideal para comparar ou copiar um trecho do passado. O caminho é relativo à raiz do repositório, não ao diretório atual. Para inspecionar a versão em stage de um arquivo, use dois pontos sem commit:
git show :src/index.js # the file as currently staged in the indexInspecionando tags
Quando você aponta git show para uma tag anotada, ele imprime a mensagem da tag e as informações do criador, seguidas do commit ao qual a tag se refere:
git show v1.0.0Esta é a forma mais rápida de ver quem criou uma tag de release e o que ela aponta. Consulte git tag para criar tags. Uma tag leve não possui metadados próprios, portanto o git show vai direto para o commit que ela rotula.
Exibindo vários objetos de uma vez
git show aceita mais de um argumento e imprime cada objeto em sequência, do mais recente para o mais antigo. Isso é útil para revisar um pequeno conjunto de commits relacionados sem percorrer todo o histórico:
git show HEAD HEAD~1 v1.0.0Opções úteis
Por padrão, git show inclui o diff completo. As opções abaixo reduzem ou reformatam essa saída:
git show --stat HEAD # summary of files changed and line counts
git show --name-only HEAD # just the changed file names
git show -s HEAD # suppress the diff; show only the commit message
git show --pretty=oneline HEAD # compact one-line header
git show --format="%an %s" -s HEAD # custom format: author name + subjectOs marcadores de --format (e --pretty) são compartilhados com git log: %an é o nome do autor, %s a linha de assunto, %H o hash completo e %ad a data do autor.
Opções comuns
| Comando | Descrição |
|---|---|
git show | Exibe o commit mais recente com seu diff completo. |
git show <commit> | Exibe um commit específico por hash, branch ou referência. |
git show <commit>:<file> | Imprime o conteúdo de um arquivo no estado daquele commit. |
git show --stat <commit> | Resume quais arquivos foram alterados e em quantas linhas. |
git show --name-only <commit> | Lista apenas os nomes dos arquivos alterados. |
git show -s <commit> | Exibe apenas a mensagem do commit, sem diff. |
git show <tag> | Exibe os metadados de uma tag e o commit ao qual ela aponta. |
git show vs git log e git diff
Esses três comandos se sobrepõem, mas atendem a necessidades diferentes. git log percorre um intervalo de commits e foi criado para navegar pelo histórico. git diff compara dois estados arbitrários. git show foca em um único objeto e mostra tudo sobre ele — tornando-o a escolha natural quando você já sabe qual commit lhe interessa.
Um fluxo de trabalho comum é encontrar o hash de um commit com git log ou git blame e, em seguida, passar esse hash para git show para ler a alteração completa em detalhes.