W3docs

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.

gitlog

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 log

Uma 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 validation

Cada 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:

ComandoDescrição
git logExibe 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 --onelineCondensa cada commit em uma única linha (hash curto + resumo) — ideal para uma visão geral rápida.
git log --statAdiciona a lista de arquivos alterados mais a contagem de linhas adicionadas e removidas para cada commit.
git log -pMostra 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 --onelineDesenha 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 --allMostra 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 commit

Os 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.txt

Isso 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-feature

Isso 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.0

Inspecionando o histórico de um único arquivo

Quando você precisa entender como um arquivo evoluiu, passe seu caminho:

git log --oneline -- src/app.js

O 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 log mostra 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 --all para 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..B não é simétrico. master..feature e feature..master retornam commits diferentes; a ordem importa.

Prática

Prática
Quais são as funcionalidades e opções do comando 'git log'?
Quais são as funcionalidades e opções do comando 'git log'?
Was this page helpful?