Introdução
Breve descrição dos comandos git status, git log, git tag e git blame, com exemplos de uso comuns e básicos.

Depois de ter um repositório Git com algum histórico, a maior parte do trabalho diário não é sobre alterar arquivos — é sobre compreender o estado atual e passado deles. Antes de fazer um commit, push ou reverter qualquer coisa, você geralmente quer responder perguntas como: O que mudei mas ainda não salvei? Quem escreveu esta linha e por quê? Quando esse bug foi introduzido? A qual release este commit pertence?
Esta parte do tutorial aborda os quatro comandos mais utilizados ao examinar um repositório, em vez de modificá-lo:
| Comando | O que responde | Escopo |
|---|---|---|
git status | O que mudou desde o último commit e o que está em staging? | Diretório de trabalho + área de staging |
git log | Qual é o histórico de commits? | Apenas snapshots confirmados |
git tag | Quais commits são notáveis (ex.: releases)? | Ponteiros nomeados para commits |
git blame | Quem alterou cada linha por último e em qual commit? | Autoria por linha de um arquivo |
Cada comando é resumido abaixo com um exemplo rápido. As páginas seguintes cobrem todas as opções em detalhes.
git status
O comando git status exibe o estado do diretório de trabalho e da área de staging, permitindo ver quais alterações estão em staging para o próximo commit e quais arquivos ainda não são rastreados pelo Git. Ele não mostra nenhum histórico de commits — apenas a diferença entre seus arquivos atuais e o último commit.
Execute-o dentro de qualquer repositório:
$ git status
On branch main
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
modified: index.html
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
modified: style.css
Untracked files:
(use "git add <file>..." to include in what will be committed)
notes.txtAqui index.html está em staging (será incluído no próximo commit), style.css foi alterado mas não está em staging, e notes.txt é novo e não rastreado. Torne o git status um hábito antes de cada commit para nunca confirmar por acidente — ou esquecer — um arquivo.
git log
O comando git log examina o histórico de commits de um repositório e ajuda a encontrar uma versão específica de um projeto. Ele lista, filtra e pesquisa commits — mas opera apenas no histórico confirmado, portanto, qualquer coisa que você ainda não tenha commitado não aparecerá.
$ git log --oneline -3
9a3c1f4 (HEAD -> main) Fix navbar alignment on mobile
1d72b08 Add contact form validation
f0e5a91 Initial commitA flag --oneline condensa cada commit ao seu hash curto e assunto. Você pode filtrar por autor (--author), por data (--since, --until) ou por conteúdo (-S "searchterm") para identificar exatamente quando uma mudança ocorreu. Para inspecionar um único commit completo, combine o git log com o git show.
git tag
Tags são referências que apontam para pontos específicos e notáveis no histórico do Git. Seu principal propósito é marcar uma release — por exemplo, v1.0.0. Ao contrário de um branch, uma tag não se move à medida que novos commits são adicionados; uma vez criada, aponta permanentemente para o mesmo snapshot.
$ git tag v1.0.0 # create a lightweight tag on the current commit
$ git tag # list existing tags
v1.0.0
$ git tag -a v1.1.0 -m "Release 1.1.0" # create an annotated tag with a messageUma tag lightweight (leve) é apenas um nome para um commit, enquanto uma tag annotated (-a) também armazena o autor da tag, uma data e uma mensagem — tags anotadas são recomendadas para releases. Tags não são enviadas automaticamente; você as compartilha com git push origin v1.0.0 (ou git push --tags).
git blame
O comando git blame mostra os metadados de autoria associados a cada linha de um arquivo: o commit, o autor e a data em que aquela linha foi alterada pela última vez. É a ferramenta ideal para entender por que uma determinada linha existe e com quem falar a respeito.
$ git blame -L 1,3 index.html
9a3c1f4a (Jane Doe 2024-03-12 10:22:01 +0000 1) <!DOCTYPE html>
1d72b08c (John Roe 2024-02-28 14:05:33 +0000 2) <html lang="en">
9a3c1f4a (Jane Doe 2024-03-12 10:22:01 +0000 3) <head>A flag -L 1,3 limita a saída às linhas 1–3. Cada linha é prefixada com o hash curto do commit, o autor e o timestamp da última alteração. Para aprofundar-se em um desses commits, copie o hash para o git show ou git log.
Examinar vs. alterar
Um modelo mental útil: esses comandos são somente leitura. Nenhum de git status, git log, git tag (ao listar) ou git blame altera seus arquivos ou histórico — eles apenas reportam o estado. Isso os torna seguros para executar a qualquer momento. Quando você realmente quiser alterar o que está registrado, recorre a outras ferramentas como git commit, git checkout, ou git diff para visualizar as alterações primeiro.