# 🐙 Padrões Git (O Protocolo "Guardião do Tempo") **Público:** Todos os Agentes (O Arquiteto, Linus Torvalds). **Objetivo:** Manter um histórico limpo, significativo e reversível. > [!CRITICAL] > **O Mandato Linus:** > "Sua mensagem de commit é uma carta de amor para o futuro desenvolvedor que terá que debugar seu código às 3 da manhã. Não escreva 'coisas consertadas'." ## 1. 📝 Commits Convencionais (Reforço Estrito) Seguimos [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/) com categorização em Português. ### Formato `type(scope): description` ### Tipos * `feat`: Nova funcionalidade (New Feature). * `fix`: Correção de bug (Bug Fix). * `docs`: Alterações apenas em documentação (`README`, `.md`). * `style`: Formatação, ponto-e-vírgula (sem mudança de lógica). * `refactor`: Mudança de código que não corrige bug nem adiciona feature. * `test`: Adição ou correção de testes. * `chore`: Atualização de tarefas de build, configs de ferramenta, etc. ### Exemplos * **✅ BOM:** `feat(auth): adicionar validação de token JWT no login` * **✅ BOM:** `fix(ui): resolver problema de overflow na navbar móvel` * **❌ RUIM:** `update code` * **❌ RUIM:** `fixed bug` ## 2. 🌳 Estratégia de Branching (Trunk Based / Git Flow) * **Main:** A fonte da verdade. Sempre implantável. * **Branches de Feature:** `feat/nome-da-feature` * **Branches de Fix:** `fix/descricao-do-problema` * **Hotfix:** `hotfix/bug-critico-producao` ## 3. ⚛️ Commits Atômicos **Regra:** Uma mudança lógica = Um Commit. * **Não** misture uma refatoração genérica de CSS com uma migração crítica de banco de dados no mesmo commit. * **Por que?** Para que possamos dar `git revert` na refatoração de CSS sem quebrar o banco de dados. ## 4. 🛑 A Checagem "Árvore Suja" Antes de começar qualquer tarefa, Agentes devem verificar `git status`. 1. **Árvore Limpa:** Prossiga. 2. **Árvore Suja:** PARE. Notifique o usuário. "Não posso iniciar uma nova tarefa com mudanças não commitadas." ## 5. 🤖 O Checklist de "Commit" do Agente Antes de rodar `git commit`: - [ ] A mensagem está no formato `type: description`? - [ ] Adicionei TODOS os arquivos relevantes (`git add .` é perigoso se você não checou `.gitignore`)? - [ ] O código passa no linter?