# 🎯 Padrões Git - PraFrota Angular

## ✅ Configuração Implementada

Este projeto agora possui padrões Git automatizados baseados no **Conventional Commits**.

### 🔧 **Componentes Instalados:**

1. **✅ Hook de Validação** (`.git/hooks/commit-msg`)
   - Valida formato de commits automaticamente
   - Impede commits mal formatados

2. **✅ Aliases Git Úteis**
   - `git cm "mensagem"` → commit com mensagem
   - `git st` → status
   - `git lg` → log gráfico
   - `git ca` → commit --amend
   - E mais...

3. **✅ Script Assistido** (`scripts/git-commit.js`)
   - Commit interativo com menu
   - Uso: `node scripts/git-commit.js`

## 📋 **Formato de Commit Obrigatório**

```
tipo(escopo): descrição
```

### 🏷️ **Tipos Permitidos:**
- `feat`: nova funcionalidade
- `fix`: correção de bug  
- `docs`: documentação
- `style`: formatação/estilo
- `refactor`: refatoração de código
- `test`: testes
- `chore`: tarefas de manutenção
- `perf`: melhorias de performance
- `ci`: integração contínua
- `build`: sistema de build
- `revert`: reverter commit

### 📏 **Regras:**
- ✅ Primeira linha: máximo 72 caracteres
- ✅ Descrição: começar com letra **minúscula**
- ✅ **Não** terminar com ponto final
- ✅ Usar imperativo (adiciona, não adicionado)

## ✅ **Exemplos Válidos:**

```bash
# Funcionalidades
git commit -m "feat: adiciona autenticação JWT"
git commit -m "feat(auth): implementa login com Google"

# Correções  
git commit -m "fix: corrige validação de email"
git commit -m "fix(api): resolve erro de timeout"

# Documentação
git commit -m "docs: atualiza README com instruções"

# Refatoração
git commit -m "refactor: simplifica lógica de validação"

# Outros
git commit -m "style: formata código com prettier"
git commit -m "chore: atualiza dependências"
git commit -m "perf: otimiza consultas do banco"
```

## 🚫 **Exemplos Inválidos:**

```bash
# ❌ Tipo inválido
git commit -m "update: adiciona nova feature"

# ❌ Descrição com maiúscula
git commit -m "feat: Adiciona autenticação JWT"

# ❌ Termina com ponto
git commit -m "feat: adiciona autenticação JWT."

# ❌ Muito longo
git commit -m "feat: adiciona sistema completo de autenticação com JWT, OAuth2, refresh tokens e validação"
```

## 🎯 **Aliases Disponíveis:**

```bash
git cm "mensagem"    # commit -m
git st               # status  
git br               # branch
git co branch-name   # checkout
git lg               # log --oneline --graph --decorate
git ca               # commit --amend
git unstage arquivo  # reset HEAD --
git last             # log -1 HEAD
```

## 🚀 **Como Usar:**

### **Método 1: Commit Normal**
```bash
git add .
git cm "feat: adiciona dashboard de analytics"
```

### **Método 2: Commit Assistido**
```bash
git add .
node scripts/git-commit.js
# Seguir o menu interativo
```

### **Método 3: Aliases**
```bash
git add .
git st              # Ver status
git cm "fix: corrige bug no login"
git lg              # Ver histórico
```

## 🔍 **Verificação:**

O hook valida automaticamente **TODOS** os commits. Se inválido:

```bash
🔍 Validando mensagem de commit...
❌ Formato de commit inválido!
# ... mensagem de ajuda ...
```

Se válido:
```bash
🔍 Validando mensagem de commit...
✅ Mensagem de commit válida!
```

## 🎉 **Benefícios:**

- ✅ **Histórico Limpo**: Commits padronizados e legíveis
- ✅ **Automação**: Validação automática impede erros
- ✅ **Produtividade**: Aliases aceleram workflow
- ✅ **Conventional Commits**: Compatível com ferramentas de versionamento
- ✅ **Changelog Automático**: Facilita geração de releases
- ✅ **Semver**: Suporte a versionamento semântico

---

**🎯 Configuração implementada com base no guia `.cursor/GIT_STANDARDS_SETUP.md`**
