DEV Community

Cover image for Commit gerado por IA no CLI
Alex Oliveira
Alex Oliveira

Posted on

Commit gerado por IA no CLI

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

  1. Acesse Google AI Studio
  2. Faça login com sua conta Google
  3. Clique em "Get API Key" no menu lateral
  4. Clique em "Create API Key"
  5. 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
Enter fullscreen mode Exit fullscreen mode

⚙️ 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?"
Enter fullscreen mode Exit fullscreen mode

📝 Passo 4: Criar o script

# Criar diretório para scripts pessoais
mkdir -p ~/bin

# Criar o arquivo do script
nano ~/bin/gemini-commit
Enter fullscreen mode Exit fullscreen mode

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


Enter fullscreen mode Exit fullscreen mode

🔐 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


Enter fullscreen mode Exit fullscreen mode

🚀 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


Enter fullscreen mode Exit fullscreen mode

🎨 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!


Enter fullscreen mode Exit fullscreen mode

⚡ Customização

Você pode personalizar o prompt editando o script:


bash
nano ~/bin/gemini-commit


Enter fullscreen mode Exit fullscreen mode

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


Enter fullscreen mode Exit fullscreen mode

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


Enter fullscreen mode Exit fullscreen mode

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


Enter fullscreen mode Exit fullscreen mode

💡 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)