Como Criar Mensagens de Commit Inteligentes com Gemini API no Linux
Cansado de escrever mensagens de commit? Vamos automatizar isso usando a API gratuita do Google Gemini! 🚀
🎯 O que vamos construir
Um comando que analisa suas mudanças de código e gera mensagens de commit seguindo conventional commits, copiando diretamente para sua área de transferência para colar no VS Code.
📋 Pré-requisitos
- Node.js instalado
- Git configurado
- Conta Google (para API key)
- Linux (Ubuntu, Debian, Arch, etc.)
🔧 Passo 1: Obter a API Key do Gemini
- Acesse Google AI Studio
- Faça login com sua conta Google
- Clique em "Get API Key" no menu lateral
- Clique em "Create API Key"
- Copie e guarde a chave (ela só aparece uma vez!)
📦 Passo 2: Instalar dependências
# Instalar CLI oficial do Gemini
npm install -g @google/gemini-cli
# Instalar xclip para clipboard (Ubuntu/Debian)
sudo apt install xclip
# Para Arch Linux
sudo pacman -S xclip
# Para Fedora/CentOS
sudo dnf install xclip
⚙️ Passo 3: Configurar o Gemini CLI
# Configurar sua API key
echo 'export GOOGLE_CLOUD_PROJECT="YOUR_PROJECT_ID"' >> ~/.bashrc
# Atualizar o bashrc (~/.zshrc ou ~/.profile)
source ~/.bashrc
# Verificar se funcionou
gemini -p "Olá, você está funcionando?"
📝 Passo 4: Criar o script
# Criar diretório para scripts pessoais
mkdir -p ~/bin
# Criar o arquivo do script
nano ~/bin/gemini-commit
Cole este conteúdo no arquivo:
#!/bin/bash
# ~/bin/gemini-commit
DIFF=$(git diff --cached)
if [ -z "$DIFF" ]; then
echo "❌ Nenhuma mudança staged. Use 'git add' primeiro."
exit 1
fi
echo "🤖 Gerando mensagem de commit..."
COMMIT_MSG=$(gemini -p "Analise este diff e crie uma mensagem de commit concisa usando conventional commits em português (feat:, fix:, docs:, refactor:, style:, test:, chore:). Máximo 50 caracteres no título. Gere uma mensagem detalhada das mudanças mas seja breve. IMPORTANTE: Responda APENAS com a mensagem de commit, sem formatação markdown, sem crases, sem explicações extras.
Diff:
$DIFF")
if [ -n "$COMMIT_MSG" ]; then
# Remover caracteres markdown e limpar
COMMIT_MSG=$(echo "$COMMIT_MSG" | sed 's/```
//g' | sed 's/^[[:space:]]*//' | sed 's/[[:space:]]*$//')
echo ""
echo "✅ Mensagem gerada:"
echo "📋 Copie o texto abaixo:"
echo ""
echo -e "\033[1;32m$COMMIT_MSG\033[0m"
echo ""
echo "📝 Cole no VS Code e commit!"
else
echo "❌ Erro ao gerar mensagem"
fi
🔐 Passo 5: Tornar executável e configurar PATH
bash
# Tornar o script executável
chmod +x ~/bin/gemini-commit
# Adicionar ~/bin ao PATH (se ainda não estiver)
echo 'export PATH="$HOME/bin:$PATH"' >> ~/.bashrc
# Criar um alias conveniente
echo 'alias gcm="gemini-commit"' >> ~/.bashrc
# Recarregar configurações
source ~/.bashrc
🚀 Como usar
bash
# 1. Fazer suas alterações no código
echo "nova funcionalidade" >> arquivo.js
# 2. Adicionar ao stage
git add .
# 3. Gerar mensagem de commit
gcm
# 4. Ir no VS Code e colar (Ctrl+V) na caixinha de commit
# 5. Revisar e commitar normalmente
🎨 Exemplo de uso
bash
$ git add .
$ gcm
🤖 Gerando mensagem de commit...
✅ Mensagem copiada para clipboard!
💡 Mensagem: feat: adiciona validação de email no formulário de cadastro
📝 Agora é só colar (Ctrl+V) na caixinha do VS Code!
⚡ Customização
Você pode personalizar o prompt editando o script:
bash
nano ~/bin/gemini-commit
Modifique a parte do prompt para suas necessidades:
- Idioma (português/inglês)
- Estilo de mensagem
- Regras específicas
- Tamanho máximo
🔍 Troubleshooting
Comando não encontrado
bash
# Verificar se ~/bin está no PATH
echo $PATH | grep "$HOME/bin"
# Se não estiver, adicionar novamente
echo 'export PATH="$HOME/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
Erro de API
bash
# Verificar configuração
gemini config list
# Reconfigurar se necessário
echo 'export GOOGLE_CLOUD_PROJECT="YOUR_PROJECT_ID"' >> ~/.bashrc
# Atualizar o bashrc (~/.zshrc ou ~/.profile)
source ~/.bashrc
xclip não funciona
bash
# Instalar xclip
sudo apt install xclip
# Ou usar alternativa
sudo apt install xsel
# E no script trocar por: echo "$COMMIT_MSG" | xsel --clipboard
💡 Vantagens desta abordagem
- ✅ Gratuito: API do Gemini tem tier gratuito generoso
- ✅ Rápido: Resposta em segundos
- ✅ Flexível: Prompt totalmente customizável
- ✅ Integrado: Funciona perfeitamente com VS Code
- ✅ Conventional Commits: Segue padrões da indústria
- ✅ Offline-friendly: Só precisa de internet na hora da geração
🤝 Contribuição
Encontrou uma melhoria? Compartilhe nos comentários! Este setup pode ser expandido para:
- Suporte a múltiplas linguagens
- Templates de mensagem por tipo de projeto
- Integração com hooks do Git
- Análise de contexto do projeto
Gostou? Deixe um ❤️ e compartilhe com outros devs que também querem commits mais inteligentes!
- AI generated content
Top comments (0)