git log
git log: exibir o log (histórico) de commits.
O comando git log é usado para exibir o histórico de commits de um repositório Git. Ele mostra a lista de todos os commits feitos no repositório, junto com informações sobre cada um, como o hash do commit, o autor, a data e a mensagem do commit. Esse comando é extremamente útil para entender o histórico de um projeto, acompanhar as mudanças ao longo do tempo e identificar commits específicos que introduziram bugs ou adicionaram funcionalidades.
Por padrão, o git log exibe os commits em ordem cronológica inversa, com o commit mais recente aparecendo primeiro. Cada commit é identificado pelo seu hash único, uma sequência de 40 caracteres que identifica o commit de forma exclusiva. A mensagem do commit é uma descrição breve das alterações feitas naquele commit, que pode ajudar você a entender o propósito de cada um.
Existem muitas opções que você pode usar com o git log para personalizar a saída, como filtrar por autor ou por intervalo de datas, mostrar apenas certas branches ou exibir as alterações introduzidas em cada commit. Aprender a usar bem o git log pode melhorar muito a sua capacidade de navegar e entender o histórico de um repositório Git.
Alguns comandos do Git, como o git log, podem colocar o terminal no modo pager, feito para navegar por listas longas. Nesse modo, você pode rolar a saída usando as setas e do teclado (ou PageUp e PageDown para rolar mais rápido). Para sair do modo pager, pressione q.
Exemplos
Exiba o histórico de commits na visualização padrão:
git logcommit c9dfc6eeeeb49a9661f39f80c587e9cc10a12c70 (HEAD -> main)
Merge: c369baa 2a0c1b5
Author: Elon Tusk <elon@dix.com>
Date: 2025-11-12
Merge branch 'feature/cart' into main
commit c369baab2bd17ec1023a7af5f967b0fac8372d17
Author: Elon Tusk <elon@dix.com>
Date: 2025-11-12
Update main branch
commit 2a0c1b53f2ce8176a93000e33226bb637f31d864 (feature/cart)
Author: Elon Tusk <elon@dix.com>
Date: 2025-11-12
Add cart total calculation
commit 39c461a87ac0d283dd892b7abe74fa61175f71a8
Author: Elon Tusk <elon@dix.com>
Date: 2025-11-12
Add cart model
commit 8ca0133bc67908e5ac49d452aaa8e00a52d18590
Author: Elon Tusk <elon@dix.com>
Date: 2025-11-12
Initial commitExiba o histórico de commits com hashes abreviados e um formato simplificado:
git log --onelinec9dfc6e (HEAD -> main) Merge branch 'feature/cart' into main
c369baa Update main branch
2a0c1b5 (feature/cart) Add cart total calculation
39c461a Add cart model
8ca0133 Initial commitExiba o histórico com uma representação gráfica da estrutura de branches:
git log --oneline --graph* c9dfc6e (HEAD -> main) Merge branch 'feature/cart' into main
|\
* | c369baa Update main branch
| * 2a0c1b5 (feature/cart) Add cart total calculation
| * 39c461a Add cart model
|/
* 8ca0133 Initial commitExiba o histórico de commits com um formato personalizado, mostrando o hash abreviado do commit, a data de autoria, o assunto e informações da branch. Existe um monte de placeholders que você pode usar para personalizar a saída; se um dia precisar, a lista completa está na documentação do Git.
git log --pretty=format:"%h %ad | %s%d [%an]"O mesmo com a sintaxe moderna, mais curta:
git log --format="%h %ad | %s%d [%an]"c9dfc6e 2025-11-12 | Merge branch 'feature/cart' into main (HEAD -> main) [Elon Tusk]
c369baa 2025-11-12 | Update main branch [Elon Tusk]
2a0c1b5 2025-11-12 | Add cart total calculation (feature/cart) [Elon Tusk]
39c461a 2025-11-12 | Add cart model [Elon Tusk]
8ca0133 2025-11-12 | Initial commit [Elon Tusk]Exiba o histórico de commits de um arquivo específico:
Repare que a opção especial -- é usada para dizer ao Git que todos os argumentos seguintes são caminhos de arquivo. Isso é necessário para evitar ambiguidade quando um caminho de arquivo pode ser confundido com uma branch ou um commit.
git log -- path/to/file.txtExiba os commits de um intervalo de datas específico:
git log --since="2023-01-01" --until="2023-01-31"Exiba o histórico de commits de uma branch específica:
git log new-blog-design-branchExiba o histórico de commits entre dois commits:
git log 9ds73k2..5ka4j3d.gitignoregit checkoutgit configgit taggit worktree