Um dos serviços mais fundamentais fornecidos pelo Git é o histórico do projeto. Como o Git acompanha todas as alterações feitas em um repositório, ele pode oferecer recursos de registro muito poderosos. Você pode consultar o histórico de um projeto de muitas maneiras diferentes e pode extrair e exibir vários dados usando um comando flexível.

O git log comando é enorme, o maior de qualquer comando Git regular. Seu manual tem mais de 2.500 linhas. Felizmente, git log fornece muito de seu comportamento mais útil a partir de apenas algumas opções principais.

Log básico com o comportamento padrão

Por padrão, git log mostra uma lista cronológica reversa de commits. Cada confirmação inclui seu hash, autor, data e mensagem de confirmação:

O comando usa um pager (por exemplo, menos, mais) para mostrar a saída completa para que você possa navegar facilmente pelos resultados. Você pode configurar o Git para usar um programa de sua escolha, como o mais pager.

Aqui está uma saída de log do git de o repositório do código-fonte git em si:

instagram viewer
commit 670b81a890388c60b7032a4f5b879f2ece8c4558 (HEAD -> mestre, origem / próximo,
origem / mestre, origem / HEAD)
Autor: Junio ​​C Hamano
Data: Seg, 14 de junho 13:23:28 2021 +0900
O segundo lote
Assinado por: Junio ​​C Hamano

O resultado começa com o hash de confirmação (670...) seguido por uma lista de branches que atualmente apontam para aquele commit (HEAD -> mestre, etc.)

A próxima linha descreve o autor deste commit, dando seu nome e endereço de e-mail.

A data e hora completas do commit seguem na próxima linha.

Finalmente, o conteúdo completo da mensagem de confirmação aparece. Você pode controlar quase tudo o mais que o git log oferece com opções de linha de comando. Existem dois tipos principais de opções:

  • Formatação, que define como o Git exibe cada commit.
  • Filtragem, que define quais confirmações git log inclui.

Além das opções de linha de comando, o git log aceita argumentos que especificam arquivos, commits, branches ou outros tipos de referência. Isso aplica mais filtragem.

Formatando saída de log Git

Um dos ajustes mais simples é o --uma linha opção que produz uma saída muito breve:

git log --oneline

Cada linha no log agora contém apenas um hash de commit abreviado e o assunto de a mensagem de confirmação. Esta é uma excelente maneira de obter uma visão geral dos compromissos recentes do projeto:

Infelizmente, sem outro contexto, essas informações nem sempre são tão úteis. Pode dar uma ideia vaga do projeto, mas faltam datas e outras informações úteis sobre autores e arquivos.

Visualizando um Gráfico de Ramificação

O --gráfico opção permite que você visualize relacionamentos entre ramos. É muito básico, mas pode ajudar a desvendar uma história complicada.

git log --oneline --graph

Relacionado: Como Criar um Novo Branch no Git

Resultado bonito personalizado

Você pode obter uma formatação mais complicada especificando-a em detalhes usando o --bonito opção. A sintaxe vai de muito simples a muito mais complexa, então consulte um manual para detalhes completos.

git log --pretty = short

É essencialmente o mesmo que git log sem a data ou mensagem completa:

git log --pretty = oneline

É equivalente a git log --oneline.

git log --pretty = fuller

Inclui muitos detalhes. Até separa o autor e o autor do commit que podem, em teoria, ser pessoas diferentes:

Com o formato: variante, você pode fornecer uma string contendo qualquer conteúdo que desejar, incluindo marcadores de posição que são substituídos por vários dados. Aqui estão alguns exemplos de marcadores de posição:

  • % H cometer hash
  • % h hash de commit abreviado
  • %de Anúncios data do autor
  • % ar data do autor, parente
  • % s enviar assunto da mensagem
  • % b enviar corpo da mensagem
  • % p hashes parentes abreviados

Você pode adicionar caracteres fixos à saída e colorir. Este exemplo também mostra uma variação no formato de data:

git log --pretty = format: '% C (auto)% h [% ad]% s' --date = short

Observe que os colchetes circundam a data. Qualquer que seja a formatação escolhida, se quiser que a saída seja útil em um pipeline ou para outras formas de processamento de texto, você deve considerar como demarcar cada parte da saída.

Mostrando diferenças no registro

Um detalhe importante ao olhar para a história de um repositório são as próprias diferenças. Afinal, eles representam o que realmente mudou no código! Para começar, você pode obter um resumo das alterações ao lado de cada commit usando --shortstat:

git log --shortstat

Isso adiciona uma linha como:

1 arquivo alterado, 48 inserções (+), 2 exclusões (-)

No final de cada commit. Você verá frequentemente esse tipo de resumo - em todas as páginas do GitHub, por exemplo - e é uma maneira útil de julgar rapidamente o escopo de um commit específico. Para obter informações mais detalhadas, você pode incluir a saída completa do patch (diffs) usando o -p bandeira:

git log -p

Filtrando a saída do log Git

Qualquer que seja a formatação aplicada, você ainda verá o log completo de todos os commits no branch atual. Mesmo que o Git os divida em páginas, ainda pode ser uma grande quantidade de saída. As opções a seguir permitem que você personalize quais commits o log inclui.

Restringindo por Quantidade

Se você quiser apenas cortar os resultados para mostrar os poucos commits mais recentes, use o -[número] sintaxe:

git log -2

Restringindo por Data

Para restringir o conjunto de confirmações a um determinado intervalo de datas, use o --Desde a (--após) e --até (--antes) opções. Cada um deles leva uma data no formato ISO 8601. Você pode usar qualquer um --Desde a ou --até sozinhos ou ambos juntos para especificar um intervalo. As opções --após e --antes são sinônimos.

git log --since = "2021-01-01" --until = "2021-05-01"

Restringindo por arquivo

O log do Git pode se concentrar em um arquivo específico, em vez de em cada arquivo em seu repositório. Isso é ótimo para ajudá-lo a descobrir como um arquivo específico mudou ao longo do tempo. Basta anexar o nome do arquivo ao final do seu comando git:

nome do arquivo git log

Você verá apenas os commits que afetaram nome do arquivo.

Diferenças entre ramos

Você pode ter alguns requisitos exclusivos ao visualizar o log de uma filial. Por exemplo, em vez de ver todo o histórico, você pode apenas querer ver o que mudou naquele branch específico. O log do Git pode ajudar por meio do ref1..ref2 sintaxe. Existem três abordagens ligeiramente diferentes que você pode usar:

  1. Veja os commits que estão em main, mas não branch:
    git log --oneline origin / branch..origin / main
  2. Visualize commits que estão no branch, mas não no principal:
    git log - origem on-line /a Principal..origem/galho
  3. Veja os commits que existem apenas no branch ou principal:
    git log - origem / ramo on-line...origem / principal

Assim como você pode ver o histórico entre ramos usando o ref1..ref2 sintaxe, você também pode ver o histórico entre as tags da mesma maneira. Afinal, tanto tags quanto branches são tipos de referência.

git log --abbrev-commit --pretty = format: '% h% ar% s' v2.32.0-rc3..v2.32.0

Se você estiver preparando notas de lançamento para um projeto maior, git shortlog deve ser o seu primeiro porto de escala. Ele produz uma lista de autores com assuntos comprometidos ao lado deles. Você pode passar um intervalo de referência para limitar o histórico de maneira semelhante ao git log:

git shortlog v2.32.0-rc3..v2.32.0

O git show command é ainda mais versátil do que git log. Ele pode trabalhar com tags e outros tipos de objetos git além do histórico de commits. Ele compartilha muitas opções com git log, mas você só precisará realmente dele se precisar se aprofundar nos detalhes de nível inferior.

Revise o passado com o registro do Git

Git log é um comando complicado, mas você pode obter muito uso de suas opções mais básicas. Navegar no histórico de um repositório é uma excelente maneira de entender com que frequência as mudanças ocorrem e quantas pessoas as fazem. Depois de ter um bom entendimento da história de um projeto, você estará em uma ótima posição para contribuir com ele.

E-mail
Junte-se à tendência de codificação social e contribua com os repositórios GitHub

Quer exercitar seus músculos de codificação e ajudar em projetos de código aberto? Veja como contribuir com o GitHub.

Leia a seguir

Tópicos relacionados
  • Programação
  • GitHub
  • Dicas de codificação
Sobre o autor
Bobby Jack (54 artigos publicados)

Bobby é um entusiasta da tecnologia que trabalhou como desenvolvedor de software por quase duas décadas. Ele é apaixonado por jogos, trabalha como Editor de Críticas na Switch Player Magazine e está imerso em todos os aspectos da publicação online e desenvolvimento web.

Mais de Bobby Jack

Assine a nossa newsletter

Junte-se ao nosso boletim informativo para dicas de tecnologia, análises, e-books grátis e ofertas exclusivas!

Mais um passo…!

Confirme o seu endereço de e-mail no e-mail que acabamos de enviar.

.