Você quer mensagens de commit que sigam o padrão Conventional Commits — prefixos como feat, fix e chore — mas digitá-las manualmente atrasa seu trabalho. O GitHub Copilot pode gerar essas mensagens estruturadas a partir das suas alterações preparadas. Este artigo explica como configurar o Copilot para produzir Conventional Commits e como usar o painel Copilot Chat para refinar mensagens de commit. Ao final, você terá um processo repetível para criar um histórico de commits consistente e escaneável.
Principais conclusões: Automatizando Conventional Commits com GitHub Copilot
- Comando /commit no Copilot Chat: Gera uma mensagem de commit a partir dos diffs preparados usando o formato Conventional Commits.
- settings.json do VS Code > github.copilot.chat.commitMessageGeneration.instructions: Prompt personalizado que força o Copilot a usar os prefixos feat, fix, chore, docs, refactor, test e style.
- Git hooks > prepare-commit-msg: Executa automaticamente a geração do Copilot toda vez que você roda
git commitsem a flag-m.
O que são Conventional Commits e como o Copilot se encaixa
Conventional Commits é uma especificação para adicionar significado legível por humanos e máquinas às mensagens de commit. Cada mensagem começa com uma palavra-chave de tipo, como feat para uma nova funcionalidade, fix para correção de bug, docs para alterações na documentação, refactor para reestruturação de código, test para adição ou modificação de testes, chore para tarefas de manutenção e style para alterações de formatação. Um escopo opcional entre parênteses segue o tipo, por exemplo feat(api). Dois pontos e um espaço separam o prefixo de uma descrição curta. Um corpo e rodapé mais longos podem aparecer abaixo.
O GitHub Copilot usa modelos de linguagem grandes treinados em repositórios de código públicos. Quando você pede para gerar uma mensagem de commit, ele analisa o diff — as linhas adicionadas, removidas e modificadas — e prevê uma mensagem que corresponde a padrões comuns. Por padrão, o Copilot pode produzir mensagens que não seguem o formato Conventional Commits. Para impor o formato, você deve fornecer instruções explícitas nas configurações do seu editor ou no prompt do Copilot Chat.
O recurso funciona dentro do Visual Studio Code, IDEs JetBrains e no Copilot Chat do GitHub.com. As etapas de configuração abaixo focam no VS Code porque ele tem o suporte mais direto para geração de mensagens de commit. Os mesmos princípios se aplicam a outros editores.
Passos para gerar Conventional Commits com GitHub Copilot
Método 1: Usar o comando /commit no Copilot Chat
A maneira mais rápida de obter uma mensagem Conventional Commit é através do painel Copilot Chat. Este método funciona com qualquer editor que tenha o Copilot Chat instalado.
- Prepare suas alterações
Executegit addpara os arquivos que você deseja commitar. O Copilot lê o diff preparado, não a árvore de trabalho. Se nada estiver preparado, a mensagem gerada será vazia ou incorreta. - Abra o Copilot Chat
No VS Code, pressione Ctrl+Shift+I ou clique no ícone do Copilot na barra de atividades. No JetBrains, abra a janela de ferramentas do Copilot Chat. - Execute o comando /commit
Digite/commitna caixa de entrada do chat e pressione Enter. O Copilot lê o diff preparado e retorna uma mensagem de commit no formato Conventional Commits. A mensagem inclui um tipo, um escopo opcional, uma descrição curta e, às vezes, um corpo mais longo. - Copie e cole a mensagem
Clique no botão de copiar na resposta do chat. Em seguida, executegit commit -m "cole aqui"no terminal, ou cole no editor de mensagens de commit se você usar uma GUI.
Método 2: Personalizar as instruções de geração de commit do Copilot no VS Code
O VS Code permite definir um arquivo de instruções personalizado que o Copilot lê toda vez que gera uma mensagem de commit. Este método força o formato Conventional Commits sem precisar digitar o prompt a cada vez.
- Abra o settings.json do VS Code
Pressione Ctrl+Shift+P, digite Preferences: Open Settings (JSON) e pressione Enter. - Adicione a configuração de geração de mensagem de commit
Insira este JSON no objeto de configurações:"github.copilot.chat.commitMessageGeneration.instructions": [
{
"text": "Generate a commit message following the Conventional Commits specification. Use one of these types: feat, fix, docs, refactor, test, chore, style. Include an optional scope in parentheses after the type. Use present tense, imperative mood. Keep the first line under 72 characters. Add a blank line and a body if the change requires explanation."
}
] - Salve o settings.json
Pressione Ctrl+S para salvar. Nenhuma reinicialização é necessária. - Prepare os arquivos e abra o editor de commit
Executegit add .e depoisgit commitsem a flag-m. O VS Code abre o editor de mensagem de commit. O ícone do Copilot aparece na barra de ferramentas do editor. - Clique no ícone de brilho ou pressione Ctrl+Enter
O Copilot gera uma mensagem de commit com base no diff preparado e nas suas instruções personalizadas. A mensagem aparece no editor. Edite se necessário, depois salve e feche o editor para concluir o commit.
Método 3: Usar um Git Hook prepare-commit-msg
Um Git hook automatiza a geração para que você nunca precise clicar em um botão. Esta abordagem funciona com qualquer editor que suporte geração de Copilot por linha de comando.
- Navegue até a pasta de hooks do seu repositório
Abra um terminal e executecd .git/hooksdentro da raiz do seu repositório. - Crie o arquivo prepare-commit-msg
Executetouch prepare-commit-msgno Linux ou macOS, outype nul > prepare-commit-msgno Windows. Em seguida, abra o arquivo em um editor de texto. - Adicione o script do hook
Cole este script:#!/bin/sh COMMIT_MSG_FILE=$1 COMMIT_SOURCE=$2 # Only generate if no -m flag was used if [ "$COMMIT_SOURCE" = "message" ]; then exit 0 fi # Run Copilot generation and overwrite the commit message file git diff --cached | gh copilot explain --output commit_message > "$COMMIT_MSG_FILE"
Este script usa o comando
gh copilot explainda GitHub CLI, que requer a versão 2.40 ou superior da GitHub CLI com a extensão Copilot habilitada. - Torne o hook executável
Executechmod +x prepare-commit-msgno Linux ou macOS. No Windows, pule esta etapa. - Prepare os arquivos e faça o commit
Executegit add .e depoisgit commit. O hook é executado, o Copilot gera uma mensagem e o editor de commit abre com o texto gerado. Edite e salve como de costume.
Problemas comuns com Copilot e Conventional Commits
O Copilot ignora o formato Conventional Commits
Se o Copilot retornar mensagens como Update file ou Fixed bug sem um prefixo de tipo, as instruções personalizadas não estão sendo aplicadas. Verifique se a configuração github.copilot.chat.commitMessageGeneration.instructions está no seu settings.json de usuário, não no .vscode/settings.json do workspace. As configurações do workspace substituem as do usuário apenas se o arquivo do workspace contiver a mesma chave. Verifique também se a sintaxe JSON é válida — uma vírgula ou colchete ausente fará com que o VS Code ignore a configuração silenciosamente.
O comando /commit retorna uma mensagem genérica
O comando /commit no Copilot Chat não lê automaticamente suas instruções personalizadas. Ele usa um prompt embutido. Para obter Conventional Commits no painel de chat, você deve incluir as regras de formato no seu prompt de chat. Por exemplo: Write a Conventional Commit message for this diff. Use types feat, fix, docs, refactor, test, chore, style. Isso funciona de forma confiável, mas requer digitar o prompt a cada vez. Para uma solução permanente, use o Método 2 ou Método 3.
O Git hook não executa ou produz erros
Se o comando gh copilot explain falhar, instale ou atualize a GitHub CLI e a extensão Copilot. Execute gh extension install github/gh-copilot. Em seguida, teste o comando manualmente: git diff --cached | gh copilot explain --output commit_message. Se a saída estiver vazia, certifique-se de que os arquivos estão preparados. Se o hook não executar, verifique se o nome do arquivo é exatamente prepare-commit-msg sem extensão e se a linha shebang #!/bin/sh está presente e correta.
Copilot Chat vs Instruções Personalizadas vs Git Hook: Principais Diferenças
| Item | Copilot Chat /commit | Instruções Personalizadas VS Code | Git Hook (prepare-commit-msg) |
|---|---|---|---|
| Esforço de configuração | Nenhum | Edição única de configurações | Criação única de script por repositório |
| Consistência de formato | Requer prompt manual a cada vez | Automático para cada commit | Automático para cada commit |
| Funciona sem GUI | Não | Não | Sim |
| Suporta escopo personalizado | Sim, se especificado no prompt | Sim, via texto de instrução | Sim, via texto de instrução |
| Requer GitHub CLI | Não | Não | Sim |
Agora você tem três maneiras de gerar Conventional Commits com GitHub Copilot. Comece com o comando /commit no Copilot Chat para testar a saída. Se você trabalha no VS Code e quer um fluxo de trabalho sem esforço, configure as instruções personalizadas no settings.json. Para equipes que desejam formatação consistente em todos os editores, implante o Git hook em cada repositório. Após configurar seu método preferido, tente combinar Conventional Commits com os recursos de geração de código do Copilot — por exemplo, peça ao Copilot para gerar uma mensagem de commit feat que corresponda à função que ele acabou de escrever para você.