git log
Nesta página você encontrará informações sobre o comando git log e seu uso, bem como as opções mais comuns e exemplos com breve explicação.

O comando git log é sua janela para o histórico de um projeto. Ele lista os commits registrados no repositório, do mais recente para o mais antigo, e oferece um conjunto rico de opções para filtrar, pesquisar e reformatar esse histórico. Esta página explica o que o git log mostra, como ler sua saída padrão, as opções mais utilizadas e como combiná-las para responder a perguntas reais como "quem alterou este arquivo?" ou "o que chegou entre dois lançamentos?"
O que o git log mostra
O git log exibe os snapshots confirmados de um repositório — o histórico permanente que o Git armazenou. Esta é uma distinção importante: o git log nunca mostra trabalho não confirmado. Para inspecionar o diretório de trabalho e a área de staging, use git status; para ver as alterações linha a linha que ainda não foram confirmadas, use git diff.
Executado sem argumentos, o comando percorre para trás a partir do commit atual (HEAD) por cada pai:
git logUma entrada típica tem esta aparência:
commit 1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b (HEAD -> master)
Author: Bob Smith <[email protected]>
Date: Mon Jun 16 10:24:31 2026 +0400
Add login form validationCada commit lista seu hash SHA-1 de 40 caracteres, o autor, a data e a mensagem do commit. Por padrão, a saída é paginada: pressione Space para rolar, q para sair. Os commits são exibidos em ordem cronológica inversa.
Opções mais utilizadas
A saída do log pode ser personalizada de diversas formas, desde filtrar quais commits aparecem até imprimi-los em um formato totalmente definido pelo usuário. Aqui estão as opções que você usará com mais frequência:
| Comando | Descrição |
|---|---|
git log | Exibe o histórico completo de commits no formato padrão. Use Space para rolar e q para sair se a saída ocupar várias telas. |
git log -n <limit> | Limita o número de commits. Por exemplo, git log -n 2 exibe apenas os 2 commits mais recentes. |
git log --oneline | Condensa cada commit em uma única linha (hash curto + resumo) — ideal para uma visão geral rápida. |
git log --stat | Adiciona a lista de arquivos alterados mais a contagem de linhas adicionadas e removidas para cada commit. |
git log -p | Mostra o patch completo (diff) introduzido por cada commit. |
git log --author="<pattern>" | Filtra os commits de um autor específico. <pattern> pode ser uma string simples ou uma expressão regular. |
git log --grep="<pattern>" | Filtra os commits cuja mensagem corresponde a <pattern> (string ou regex). |
git log <since>..<until> | Mostra apenas os commits alcançáveis a partir de <until> mas não de <since>. Cada lado pode ser um ID de commit, nome de branch, tag, HEAD ou qualquer outra referência de revisão. |
git log <file> | Mostra apenas os commits que tocaram o arquivo fornecido — seu histórico de alterações. |
git log --graph --decorate --oneline | Desenha um gráfico em texto da estrutura de branch/merge, rotula branches e tags, e imprime uma linha por commit. |
git log --since="<date>" | Mostra commits mais recentes que uma data (por exemplo "2 weeks ago" ou "2026-01-01"). |
git log --until="<date>" | Mostra commits mais antigos que uma data. |
git log --all | Mostra commits de todos os branches e refs, não apenas do branch atual. |
Uma visão geral compacta
Para escanear o histórico rapidamente, --oneline é a ferramenta mais usada. Combinado com --graph e --decorate, transforma o log em um mapa legível de seus branches:
git log --graph --decorate --oneline* 1a2b3c4 (HEAD -> master) Add login form validation
* 9f8e7d6 Fix typo in README
| * 4c5d6e7 (feature) Start checkout flow
|/
* 0a1b2c3 Initial commitOs asteriscos e linhas de conexão mostram como os branches divergiram e foram mesclados; (HEAD -> master) e (feature) são as decorações adicionadas pelo --decorate.
Filtrando o histórico
O verdadeiro poder do git log está em reduzir milhares de commits até os que você precisa.
Por autor e conteúdo
Para encontrar todas as alterações que um determinado autor fez em um único arquivo, combine --author, -p e um caminho de arquivo:
git log --author="Bob Smith" -p w3docs.txtIsso mostra o diff completo de cada alteração que Bob fez em w3docs.txt. Para pesquisar nas mensagens dos commits em vez dos autores, use --grep:
git log --grep="bugfix"Por data
git log --since="2 weeks ago" --until="yesterday"--since e --until aceitam datas absolutas (2026-01-01) ou expressões relativas amigáveis ("3 days ago", "last Monday").
Entre duas referências
A sintaxe <since>..<until> (dois pontos) responde à pergunta "o que está em B que não está em A?" — perfeita para comparar branches antes de um merge:
git log --oneline master..some-featureIsso lista todos os commits em some-feature que ainda não chegaram ao master. Inverta os lados para ver o inverso. Como as tags também funcionam como referências de revisão, a mesma sintaxe é ótima para notas de lançamento:
git log --oneline v1.0..v2.0Inspecionando o histórico de um único arquivo
Quando você precisa entender como um arquivo evoluiu, passe seu caminho:
git log --oneline -- src/app.jsO separador -- informa ao Git que tudo depois dele é um caminho, o que evita ambiguidade quando um arquivo e um branch compartilham o mesmo nome. Para ver as alterações reais junto com o histórico, adicione -p. Se você precisar saber quem tocou cada linha por último, use git blame. Para inspecionar o conteúdo completo de um commit específico, use git show.
Armadilhas comuns
- O
git logmostra apenas o histórico confirmado. Trabalho em stash, em staging ou não salvo não aparecerá — veja git status e git stash para isso. - Por padrão, apenas o branch atual é exibido. Adicione
--allpara incluir todos os branches, ou nomeie um branch/ref explicitamente. - Commits perdidos muitas vezes podem ser recuperados. Mesmo commits para os quais nenhum branch aponta ainda podem ser acessíveis através do git reflog.
A..Bnão é simétrico.master..featureefeature..masterretornam commits diferentes; a ordem importa.