git log
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>...]Opções
Escolhendo a opção certa
Formatos de saída do log
Escolha o formato certo para a sua necessidade
| Comando | Mostra | Nível de detalhe | Ideal para |
|---|---|---|---|
git log | Todos os detalhes | Alto | Revisão detalhada |
git log --oneline | Hash + mensagem | Baixo | Visão geral rápida |
git log --stat | Arquivos alterados por commit | Médio | Ver o alcance das mudanças |
git log -p | Diff completo | Muito alta | Revisão de código |
Filtrar commits
Achar commits específicos no histórico
| Comando | Filtrar por | Exemplo |
|---|---|---|
--author | Pessoa que escreveu o commit (autor; use --committer para quem fez o commit) | --author="John" |
--since/--until | Intervalo de datas | --since="2024-01-01" |
--grep | Mensagem do commit | --grep="fix" |
-- <path> | Arquivos alterados | -- src/app.js |
Log ou reflog
Entender quando usar cada um
| Comando | Mostra | Sobrevive a um reset? | Use para |
|---|---|---|---|
git log | Histórico de commits da branch | No | Consulta normal do histórico |
git reflog | Todos os movimentos do HEAD | Sim | Recuperar commits perdidos |
Exemplos
Ver commits recentes
git logMostra o histórico completo com hash, autor, data e mensagem.
Visão compacta de uma linha
git log --onelineMostra cada commit em uma linha, com hash curto e mensagem.
Ver o histórico de um arquivo
git log -- path/to/file.jsMostra só os commits que mudaram o arquivo indicado.
Grafo visual das branches
git log --oneline --graph --allMostra um grafo em texto de todas as branches e seus commits.
Exemplos de fluxos de trabalho
git log --oneline -10Olhada rápida nos últimos 10 commits
git log -p -1Ver o diff completo do commit mais recente
git log --oneline -- path/to/file.jsListar os commits que mudaram este arquivo
git log -p -- path/to/file.jsVer as mudanças reais
git blame path/to/file.jsVer quem escreveu cada linha
git log --oneline --graph --allVisualização completa das branches
git log --oneline --graph main..featureCommits 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
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.
Use --all: git log --oneline --all. Sem ele, você só vê os commits alcançáveis a partir da branch atual (HEAD).
Use -p (patch): git log -p. Adicione -1 para ver só o mais recente: git log -p -1
Use --author: git log --author="name". Corresponde a partes de nomes e e-mails (diferencia maiúsculas; adicione -i para ignorar).
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”.