Pular para o conteúdo

Como escrever uma boa mensagem de commit

Quatro hábitos pequenos deixam o histórico do projeto legível para você e para quem chega depois.

Ferramenta relacionada

Gerar a mensagem e o comando git commit

Como é uma boa mensagem de commit?

Uma primeira linha curta no imperativo, de cerca de 50 caracteres, uma linha em branco e, se precisar, um corpo explicando o porquê. Cada commit deve ter uma mudança lógica só.

O que uma boa mensagem de commit faz

A mensagem é o que alguém lê daqui a seis meses, quando um teste quebra e a pergunta é "por que isto mudou?". O Pro Git, o livro oficial do projeto Git, reúne diretrizes de commit que valem para qualquer repositório. Elas são pequenas e se resumem em quatro hábitos.

Os quatro hábitos

  1. Um commit, uma mudança lógica. Em vez de juntar três assuntos num commit só, divida o trabalho. O livro cita git add --patch para marcar só parte das alterações de um arquivo.
  2. Confira os espaços sobrando. Antes do commit, rode git diff --check: ele aponta espaços em branco no fim das linhas e outros descuidos que você não quer eternizar no histórico.
  3. Primeira linha curta. O livro sugere um resumo de cerca de 50 caracteres. É uma regra prática, não uma regra do Git: o Git aceita qualquer tamanho.
  4. Depois, uma linha em branco e a explicação. O livro sugere quebrar o texto por volta de 72 colunas e descrever a motivação da mudança, comparando com o comportamento anterior. Escreva no imperativo ("corrige o link", em vez de "corrigido" ou "corrige").

Esses números (50 e 72) são recomendações do livro, tratadas aqui como regra prática. O validador de mensagens deste site os mostra como dica, nunca como erro.

Mensagem de uma linha e mensagem com corpo

Para uma mudança pequena, uma linha basta: git commit -m "docs: corrige o link do README". Para explicar o porquê, use -m mais de uma vez; o Git junta cada -m como um parágrafo separado por linha em branco:

git commit -m "fix: evita travar com arquivo vazio" -m "O comando lia a primeira linha sem conferir se ela existia. Agora devolve uma lista vazia."

Sem o -m, o Git abre o seu editor de texto para você escrever a mensagem inteira.

Padronizar com Conventional Commits

Se o projeto adota o padrão Conventional Commits, a primeira linha segue o formato tipo(escopo): descrição. O guia de Conventional Commits explica as 16 regras da especificação, e o gerador de mensagem de commit monta o texto e o comando git commit para você. Antes de adotar o padrão em um projeto que não é seu, olhe o histórico e o CONTRIBUTING: use o estilo que já existe.

Exemplo resolvido: de ruim a bom

AntesDepois
arrumeifix: evita travar com arquivo de tarefas vazio
mudançasdocs: explica a instalação no Windows
fix bug, update deps, rename filetrês commits: fix: ..., build: atualiza dependências, refactor: renomeia utils.js

Na terceira linha, o problema não é o texto, é o tamanho: três assuntos em um commit. Separe com git add --patch ou comitando arquivo por arquivo. Cada commit passa a poder ser entendido, revisado e, se necessário, desfeito sozinho.

Perguntas frequentes

Qual o tamanho máximo da mensagem de commit?

O Git não fixa limite. O Pro Git sugere um resumo de cerca de 50 caracteres e o corpo quebrado por volta de 72 colunas. São recomendações, tratadas neste site como regra prática, nunca como erro.

Por que usar o imperativo?

O Pro Git recomenda escrever como uma ordem, como em "Fix bug" e não "Fixed bug". Em português, o equivalente costuma ser o presente do indicativo na terceira pessoa ou o imperativo, como em "corrige o link". O importante é manter o mesmo estilo no projeto inteiro.

Como escrevo uma mensagem com mais de uma linha?

Use mais de um -m: cada um vira um parágrafo separado por linha em branco. Sem -m, o Git abre o seu editor para você escrever a mensagem inteira. O gerador de mensagem de commit deste site monta o comando para Bash e PowerShell.

O que o git diff --check faz?

Aponta espaços em branco no fim das linhas e outros descuidos nas alterações, antes do commit. O Pro Git recomenda rodar o comando para não eternizar esses erros no histórico. Foi testado aqui: ele lista a linha e o arquivo e termina com código de saída diferente de zero.

Fontes deste guia

Abertas em 11/10/2026. O texto é nosso, em português; as fontes ficam aqui com link, licença e o que foi lido.

  • Pro Git, 5.2 Git Distribuído: Contribuindo com um Projeto (git-scm.com)
    A página não mostra data · aberta em · reconferência: confirmada na abertura (11/10/2026) · licença do conteúdo: CC BY-NC-SA 3.0
    O que lemos: As diretrizes de commit: conferir espaços em branco com git diff --check, um commit por mudança lógica, resumo de cerca de 50 caracteres, linha em branco e explicação por volta de 72 colunas, verbo no imperativo.
    Como usamos: Só link e fatos (git diff --check; limites de 50 e 72 caracteres, tratados aqui como regra prática). Nenhum trecho do livro é copiado ou adaptado, por causa da cláusula NC.
  • Conventional Commits 1.0.0 (conventionalcommits.org)
    A página não mostra data · aberta em · reconferência: confirmada na abertura (11/10/2026) · licença do conteúdo: CC BY 3.0
    O que lemos: As 16 regras numeradas (tipo, escopo, ! , descrição, corpo, rodapés, BREAKING CHANGE), a ligação entre feat e fix e os números MINOR e PATCH do SemVer, a lista de tipos recomendada pelo @commitlint/config-conventional e os exemplos. A versão exibida é a 1.0.0; a página não marca nenhuma versão mais nova.
    Como usamos: As regras são resumidas em português e citadas por número. Os trechos em inglês são curtos, de regras, com a fonte ao lado.

Informação geral, não é aconselhamento jurídico. Quando um guia cita uma licença de conteúdo, ela vale para a página citada, não para este site.