Como mostrar o que um commit fez?

265

Uma maneira estúpida que eu sei é:

git diff commit-number1 commit-number2

alguma maneira melhor?

Quero dizer, quero conhecer o commit1 em si, não quero adicionar o commit2 antes dele como parâmetro.

Sam Liao
fonte
14
Enquanto "git show <commit>" é a solução correta, você pode usar "git diff <commit> ^!" para obter diferenças entre o commit e seu (primeiro) pai. Veja man git-rev-parse (1) para detalhes.
Jakub Narębski
Adereços para @Jakub: git diff <commit>^!é a resposta, IMHO. É o que você vê na exibição de confirmação no github.com
Chris

Respostas:

63

Faz

$ git log -p

faça o que você precisa?

Confira o capítulo sobre o Git Log no Git Community Book para mais exemplos. (Ou veja a documentação .)

Atualização: Como outros ( Jakub e Bombe ) já apontaram: embora o acima funcione, o git show é na verdade o comando que se destina a fazer exatamente o que foi solicitado.

Mark van Lent
fonte
51

TL; DR

git show <commit>


mostrar

Para mostrar o que um commit fez com as estatísticas:

git show <commit> --stat

Registro

Para mostrar o log de confirmação com as diferenças introduzidas para cada confirmação em um intervalo:

git log -p <commit1> <commit2>

O que é <commit>?

Cada confirmação tem um ID exclusivo que referenciamos aqui como <commit>. O ID exclusivo é um hash SHA-1 - uma soma de verificação do conteúdo que você está armazenando e um cabeçalho. #TMI

Se você não conhece o seu <commit>:

  1. git logpara visualizar o histórico de confirmação

  2. Encontre a confirmação com a qual você se preocupa.

Geoffrey Hale
fonte
22

Descobri que "git show --stat" é o melhor de todos aqui, fornece um breve resumo do commit, quais arquivos você adicionou e modificou sem fornecer muitas coisas, especialmente se você alterou muitos arquivos .

Harvey Lin
fonte
6

Esta é uma maneira que eu conheço. Com git, sempre parece haver mais de uma maneira de fazer isso.

git log -p commit1 commit2
1800 INFORMAÇÃO
fonte