Gerador inteligente de mensagens de commit usando IA para criar commits padronizados e descritivos.
- Não precisa de Key de nenhum IA
- Roda 100% local
- Gera mensagens de commit baseadas no diff das alterações
- Segue convenções de commit (Conventional Commits)
- Suporta múltiplos tipos de commit (feat, fix, docs, etc) com emojis
- Analisa o contexto do projeto para gerar mensagens mais relevantes
- Integração fácil com seu fluxo de trabalho git
- Diferentes estilos de mensagem para tornar seus commits mais divertidos
- Python 3.x
- Git
- Terminal Bash ou Zsh
- Para utilizar, dependerá de uma conexão de internet
O resultado do comando git diff e git log será enviado para um serviço que fará a análise deste conteúdo para gerar a mensagens!
Estava usando o Blackbox com gpt-4o, mas começei e ter problemas no retorno das mensagens, com textos truncados.
Com base nos testes, nesse momento recomento Provider: FreeGpt e Model: gemini-pro [19/11/2024]
- Baixe o script de instalação:
curl -fsSL https://raw.githubusercontent.com/andpeicunha/smart-commit-ai/master/install.sh -o install.sh- Torne o script executável e faça a instalação:
chmod +x install.sh && ./install.shEle vai perguntar qual shell você usa, se o Bash ou ZSH, basta seguir as instruções.
- Após a instalação, você pode remover o script:
rm install.shO Smart Commit AI pode ser personalizado através do arquivo .gscrc. Na primeira execução, um arquivo de configuração padrão será criado em seu diretório home.
Exemplo de configuração:
{
"commit_message": {
"max_length": 50,
"language": "en-US"
},
"description": {
"format": "bullets",
"max_bullets": 3,
"max_bullet_length": 100,
"max_paragraph_length": 300,
"language": "pt-BR"
},
"editor": {
"command": "code",
"args": ["--wait"],
"fallback": {
"command": "vim",
"args": []
}
},
"shell_alias": "sca",
"ai": {
"provider": "FreeGpt",
"model": "gemini-pro"
}
}-
commit_message: Configurações da primeira linha do commit
max_length: Tamanho máximo da mensagemlanguage: Idioma ("en-US" ou "pt-BR")
-
description: Configurações da descrição detalhada
format: Formato da descrição ("bullets" ou "paragraph")max_bullets: Número máximo de bulletsmax_bullet_length: Tamanho máximo de cada bulletmax_paragraph_length: Tamanho máximo do parágrafolanguage: Idioma ("en-US" ou "pt-BR")
-
editor: Configurações do editor para edição de mensagens
command: Comando do editor (ex: "code", "vim", "nano")args: Argumentos adicionais do editorfallback: Editor alternativo caso o principal falhe
-
ai: Configurações sobre a AI que você deseja usar
Para alterar o Provider basta acessar aqui e escolher o Provider e Modelo que deseja usar
provider: Veja qual provider tem o modelo que deseja (g4f.Provider.Airforce=Airforce)model: Defina qual o modelo de IA quer usar para o provedor escolhido
1. Faça suas alterações no código
2. Adicione as alterações ao stage do git usando git add .
3. Execute o comando:
gsc # Estilo padrão
gsc --ironico # Mensagem com toque de humor
gsc --nerd # Referências geek
gsc --poeta # Estilo poético
gsc --epico # Tom épicoPara ver todos os estilos disponíveis:
gsc --list
# também pode usar a forma abreviada
gsc -LPara aceitar automaticamente a mensagem de commit
gsc --accept
# também pode usar a forma abreviada
gsc -APara não gerar a descrição
gsc --desc
# também pode usar a forma abreviada
gsc -D💡 O comando
gscé um alias no seu shell, portanto NÃO precisa ter o git antes, basta executar dessa forma e ver a mágica acontecer!
-
O script irá analisar suas alterações e vai sugerir uma mensagem de commit
-
Você pode:
- Pressionar
ENTERou digitarYpara aceitar a mensagem - Digitar
npara cancelar - Digitar
epara editar a mensagem no seu editor configurado
- Pressionar
Você pode personalizar o tom das suas mensagens de commit usando diferentes estilos:
- Padrão: Mensagens profissionais e diretas [default]
- Irônico: Adiciona um toque de humor às mensagens
- Nerd: Usa referências da cultura geek e tech
- Poeta: Mensagens com um toque elegante
- Épico: Tom dramático e heroico
As mensagens seguem o padrão:
type: short end clear description (max 50 caracteres, idioma configurável)
# Formato bullets:
- Bullet points para mais detalhes (idioma configurável)
- Número e tamanho dos bullets configuráveis
# Formato parágrafo:
Descrição detalhada em formato de parágrafo, mencionando os arquivos alterados e mudanças específicas. O tamanho máximo e idioma são configuráveis através do arquivo .gscrc.feat: nova funcionalidadefix: correção de bugdocs: documentaçãostyle: formatação, ponto-e-vírgula, etcrefactor: refatoração de códigotest: adição/modificação de testeschore: build, configs, etcperf: melhorias de performance
Contribuições são sempre bem-vindas! Sinta-se à vontade para:
- Fazer um fork do projeto
- Criar uma branch para sua feature
- Fazer suas alterações
- Enviar um Pull Request
Este projeto está sob a licença MIT.
Por favor, abra uma issue descrevendo o problema encontrado.