Normalmente, a mensagem de um commit possui um resumo e uma descrição detalhada. O commit pode, porém, ser composto por um assunto e um corpo. Sendo este último caso utilizado quando um resumo das mudanças realizadas no tamanho requerido pelo padrão fica ambíguo. Assim o corpo serve para explicar de forma clara as mudanças e o assunto apenas para contextualização.
O foco de uma mensagem de commit deve ser o porquê de se ter feito essa alteração. (O como, já está explicado no código alterado pelo commit.) Deve se também explanar possíveis side effects ou consequências contra-intuitivas. Deixando claro o que mudará no projeto quando esse commit for efetivamente adicionado.
Divisão da mensagem
A primeira linha de um commit é um resumo (ou assunto) das mudanças realizadas. Caso não queira adicionar uma descrição mais detalhada sobre as alterações, a mensagem pode ser composta apenas pelo resumo.
O ideal, porém, em uma mensagem de commit, é a presença de um resumo e uma descrição detalhada. Para adicionar a descrição à mensagem, deve-se escrever o resumo na primeira linha, deixar a segunda linha da mensagem em branco e, a partir da terceira linha, detalhar as alterações. Sem essa linha em branco entre resumo e descrição, algumas funcionalidades do git se perdem, e acabam falhando ou apresentando erro.
Parágrafos só são considerados quando há um linha em branco dividindo o texto.
Informações que sejam identificadores - para um issue tracker, por exemplo - devem ficar no final da mensagem.
Resumo (ou assunto)
O resumo deve ser:
- no máximo uma linha de até 50 caracteres;
- escrito com a primeira letra maiúscula;
- terminado sem ponto final;
- escrito com os verbos no imperativo.
Corpo
O corpo deve ser utilizado para explicar quais foram as mudanças e porquê elas foram feitas. Para manter consistência, o corpo deve:
- ter no máximo 72 caracteres por linha;
- ser escrito como um texto normal; o início de um parágrafo deve estar com letra maiúscula;
- utilizar listas (com * ou - para identificação dos itens) quando necessário.