git status e git log: ler o estado e o histórico do projeto
Como traduzir cada bloco do git status, ler o log em uma linha por commit, filtrar por autor e por arquivo e sair do pager sem precisar fechar o terminal.
git status responde onde estão as mudanças de agora; git log responde quais
versões já foram gravadas. Ler os dois antes de alterar o histórico evita a
maior parte dos comandos dados na branch errada, dos arquivos esquecidos e dos
commits que misturam tarefas.
O laboratório da livraria foi preparado com quatro estados simultâneos para que cada símbolo aparecesse de verdade. A forma curta devolveu:
git status --shortTraduza o status longo como uma lista de decisões
O status longo separa o que entra no próximo commit, o que mudou depois do stage e o que ainda não é rastreado:
git statusChanges not staged for commit: modified: README.md modified: catalogo.txt
Untracked files: notas.txt
Não trate esses blocos como erro. Eles descrevem escolhas pendentes. O catálogo
aparece duas vezes porque uma versão dele foi preparada e depois recebeu outra
linha na working tree. O próximo commit leva a primeira versão; a linha nova
fica para depois, a menos que você execute git add catalogo.txt novamente.
Pense no status como uma conferência de expedição. Há itens dentro da caixa, itens alterados na bancada e itens sem etiqueta. O limite da analogia é que o stage não contém uma cópia física independente: ele registra o conteúdo por objetos e entradas do índice.
As duas colunas da forma curta
A coluna da esquerda representa a diferença entre HEAD e stage. A da direita
representa stage e working tree. M é preparado, M é apenas modificado,
MM está nos dois lugares, A é novo preparado e ?? é desconhecido.
Você pode conferir cada lado com dois diffs:
git --no-pager diff --stat
git --no-pager diff --cached --statO primeiro bloco ainda não entra no commit. O segundo é a proposta atual. Use
--name-status quando você precisa de uma lista mais compacta:
git diff --name-status
git diff --cached --name-statusLeia o log sem perder o desenho
O log completo mostra hash, autor, data e mensagem. Para uma leitura rápida,
--oneline encurta o hash; --decorate exibe nomes; --graph desenha pais.
git --no-pager log --oneline --graph --decorate -4Uma linha vertical indica uma sequência sem divergência. Depois de branches e merge, barras inclinadas mostram os pais. O desenho não é decoração: ele evita comparar commits como se fossem apenas uma lista cronológica.
Se a saída ocupar a tela, o Git pode abrir um pager. Use setas para navegar e
q para sair. O exemplo usa --no-pager para que a captura termine no mesmo
terminal; não é necessário colocar essa opção em todo comando cotidiano.
Filtre por pessoa, texto e arquivo
Quando o histórico cresce, git log aceita perguntas específicas. O filtro de
autor encontrou os dois commits mais recentes de Ana:
git --no-pager log --oneline --author='Ana Souza' -2-S procura commits que alteraram a quantidade de uma sequência. É útil para
descobrir quando um termo entrou ou saiu:
git --no-pager log --oneline -S'Refatoração' -- catalogo.txtO -- encerra opções e inicia caminhos. Sem ele, um nome começando com hífen
pode ser interpretado como opção. Para padrões de diff, -G usa expressão
regular; para história de um arquivo, coloque apenas -- caminho.
Show abre um commit específico
git show combina metadados e patch. Com --stat, você observa o tamanho da
mudança antes de ler todas as linhas:
git --no-pager show --stat --oneline HEADTroque HEAD por um hash obtido no seu log. Não copie 4fd86f9 para outro
repositório: esse identificador pertence ao sandbox. Se o hash curto for
ambíguo num projeto enorme, o Git pede mais caracteres.
Blame começa uma investigação, não uma acusação
git blame associa cada linha ao último commit que a tocou. No catálogo, duas
linhas commitadas e duas ainda locais ficaram claras:
git --no-pager blame catalogo.txtUse o hash como porta para contexto com git show, não como ferramenta para
culpar alguém. A pessoa listada pode ter apenas formatado uma linha que nasceu
em outra decisão. O histórico explica mudanças; conversa e revisão explicam o
contexto humano.
O erro mais comum é rodar git log na pasta errada e acreditar que o projeto
perdeu histórico. Confira pwd, git status e a branch atual. Depois pratique
branches e switch, onde --graph começa a fazer mais
sentido. Se precisar remover uma seleção ou recuperar um commit, consulte
desfazer no Git.
Sua missão é criar um estado MM, explicar as duas colunas antes de executar
outro git add e encontrar pelo texto qual commit introduziu uma linha. Termine
quando o ciclo do primeiro commit e o log
contarem a mesma história sem abrir o editor. Registre também a hipótese antes
da consulta: qual arquivo está no stage, qual pessoa introduziu a sequência e
qual commit é pai do atual. A saída vale como teste do seu modelo mental, não
como uma lista para copiar sem interpretação.
Perguntas frequentes
Como sair da tela do git log no terminal?
Dúvidas e comentários
Travou em algum passo? Pergunte aqui — a equipe e outros alunos respondem.
Entrar para perguntarÉ o mesmo login gratuito dos cursos.
Nenhuma dúvida por aqui ainda — a primeira pode ser a sua.
Todo o código deste artigo foi executado em git version 2.54.0 (Apple Git-156) no macOS 27, e as saídas exibidas são as reais — como produzimos este conteúdo.
Fontes consultadas
- Git — git status — git-scm.com
- Git — git log — git-scm.com


