git log

Inspeção e comparação

Mostrar o histórico de commits


O comando 'git log' mostra o histórico de commits do seu repositório. Ele exibe os commits em ordem cronológica inversa (os mais novos primeiro), com hash, autor, data e mensagem. Com várias opções, você personaliza o formato de saída, filtra commits e acompanha o histórico de um arquivo. Essencial para entender a história do projeto e achar mudanças específicas.

Sinopse

git log [<options>] [<revision-range>] [[--] <path>...]
[ ] opcional| ou<arg> valor a substituir... repetível--flag opção

Opções

Clique em uma opção para expandir

Iniciante (4)

Atalho para --pretty=oneline --abbrev-commit. Mostra cada commit em uma única linha com hash abreviado.

RecomendadoHistórico compacto de uma linha — a melhor visão geral do dia a dia

Exemplo

git log --oneline

Desenhar uma representação gráfica em texto do histórico de commits. Mostra visualmente a estrutura de branches e merges.

RecomendadoMostra onde as branches se dividem e se mesclam; combine com --oneline

Exemplo

git log --oneline --graph

Mostrar commits alcançáveis a partir de todas as refs - cada branch local, branch de rastreamento remoto e tag (mais o stash) - não só do HEAD. Essencial junto com --graph.

RecomendadoCom --graph, mostra cada branch, tag e ref de rastreamento remoto

Exemplo

git log --oneline --all

Limitar o número de commits mostrados. -n 5 mostra só os 5 commits mais recentes; -5 e --max-count=5 são formas equivalentes.

RecomendadoLimita a saída aos N últimos commits

Exemplo

git log -n 5

Intermediário (2)

Mostrar o diff (patch) introduzido por cada commit. Veja exatamente o que mudou em cada commit. Commits de merge não mostram diff por padrão.

Quando necessárioDiffs completos são longos; combine com -n ou um caminho. Merges não mostram diff por padrão

Exemplo

git log -p

Filtrar commits cujo nome ou e-mail do autor corresponde ao padrão (uma regex que diferencia maiúsculas; adicione -i para ignorar). Útil para ver o que uma pessoa específica escreveu.

Quando necessárioFiltra por autor: regex que diferencia maiúsculas; adicione -i para ignorar

Exemplo

git log --author="John"

Escolhendo a opção certa

Formatos de saída do log

Escolha o formato certo para a sua necessidade

ComandoMostraNível de detalheIdeal para
git logTodos os detalhesAltoRevisão detalhada
git log --onelineHash + mensagemBaixoVisão geral rápida
git log --statArquivos alterados por commitMédioVer o alcance das mudanças
git log -pDiff completoMuito altaRevisão de código

Filtrar commits

Achar commits específicos no histórico

ComandoFiltrar porExemplo
--authorPessoa que escreveu o commit (autor; use --committer para quem fez o commit)--author="John"
--since/--untilIntervalo de datas--since="2024-01-01"
--grepMensagem do commit--grep="fix"
-- <path>Arquivos alterados-- src/app.js

Log ou reflog

Entender quando usar cada um

ComandoMostraSobrevive a um reset?Use para
git logHistórico de commits da branchNoConsulta normal do histórico
git reflogTodos os movimentos do HEADSimRecuperar commits perdidos

Exemplos

Ver commits recentes

git log

Mostra o histórico completo com hash, autor, data e mensagem.


Visão compacta de uma linha

git log --oneline

Mostra cada commit em uma linha, com hash curto e mensagem.


Ver o histórico de um arquivo

git log -- path/to/file.js

Mostra só os commits que mudaram o arquivo indicado.


Grafo visual das branches

git log --oneline --graph --all

Mostra um grafo em texto de todas as branches e seus commits.

Exemplos de fluxos de trabalho

1
git log --oneline -10

Olhada rápida nos últimos 10 commits

2
git log -p -1

Ver o diff completo do commit mais recente

1
git log --oneline -- path/to/file.js

Listar os commits que mudaram este arquivo

2
git log -p -- path/to/file.js

Ver as mudanças reais

3
git blame path/to/file.js

Ver quem escreveu cada linha

1
git log --oneline --graph --all

Visualização completa das branches

2
git log --oneline --graph main..feature

Commits da feature que não estão na main

Solução de problemas

A saída do log é longa demais / não consigo sair

Causa: O Git usa o pager 'less' por padrão

Aperte 'q' para sair. Use -n para limitar os commits ou redirecione para o head: git log --oneline | head -20

Não vejo commits de outras branches

Causa: Por padrão, o git log só mostra commits alcançáveis a partir do HEAD (a sua branch atual)

Use --all: git log --oneline --all

Não acho um commit que sei que existe

Causa: O commit pode estar em outra branch ou ter sido removido com reset

Tente git reflog para ver todas as posições recentes do HEAD, inclusive depois de resets

O log mostra informação demais / de menos

Causa: O formato padrão pode não servir para o que você precisa

Use --oneline para algo breve, -p para detalhes e --stat para um resumo por arquivo

Dicas e armadilhas

Boas práticas

  • ✓Use --oneline para visões gerais rápidas e o log completo para revisões detalhadas
  • ✓Combine --graph --all --oneline para visualizar todas as branches
  • ✓Use -n para limitar a saída quando só precisar dos commits recentes
  • ✓Filtre por autor, data ou caminho para achar mudanças específicas
  • ✓Use git log main..feature para ver os commits exclusivos de uma branch

Erros comuns

  • ✗Não saber que dá para apertar 'q' para sair do visualizador do log (que usa o pager less por padrão).
  • ✗Esquecer o --all quando quer ver commits de todas as branches, não só da atual.
  • ✗Usar git log quando precisa do git reflog - o log mostra o histórico de commits, o reflog mostra todas as mudanças de refs, incluindo resets.
  • ✗Não usar -- antes de caminhos de arquivo, o que pode causar ambiguidade com nomes de branch.

Perguntas frequentes

A:

Aperte 'q' para sair. O git log usa o pager 'less'. Você também pode limitar a saída com -n ou redirecionar para o head.

A:

Use --all: git log --oneline --all. Sem ele, você só vê os commits alcançáveis a partir da branch atual (HEAD).

A:

Use -p (patch): git log -p. Adicione -1 para ver só o mais recente: git log -p -1

A:

Use --author: git log --author="name". Corresponde a partes de nomes e e-mails (diferencia maiúsculas; adicione -i para ignorar).

A:

O log mostra o histórico de commits. O reflog mostra todos os movimentos do HEAD, incluindo resets. Use o reflog para recuperar commits “perdidos”.