Skip to main content

git-workflow

Git workflow - Boas práticas para branches, commits e PRs

الانتقال إلى التثبيت

معلومات المصدر

المستودع
criptogus/liquid-ai
آخر نشاط في المصدر
٢٥ يناير ٢٠٢٦ في ٢٣:٤٥
لغة SKILL.md المكتشفة
البرتغالية
النجوم
٧
التفرعات
٢

خيارات التثبيت

يُحدَّد Prompt الذي يراجع المصدر أولًا بشكل افتراضي. يمكنك التبديل إلى أمر مباشر أو تنزيل نسخة محلية.

مراجعة ملفات المصدر

اقرأ SKILL.md وأي ملفات مرافقة يعرضها SkillsMP قبل أن تقرر التثبيت.

عرض SKILL.md

SKILL.md
تعليمات المصدر · معاينة للقراءة فقط
name
git-workflow
description
Git workflow - Boas práticas para branches, commits e PRs
version
1.0.0
category
workflow
triggers
["git","branch","commit","merge","rebase","pull request","pr","versão","release"]
tools
[]
author
liquid-ai
based_on
obra/superpowers
# Git Workflow - Boas Práticas Esta skill implementa um workflow Git consistente para desenvolvimento em equipe. ## Modelo de Branches ``` main (ou master) │ ├── develop │ │ │ ├── feature/user-auth │ ├── feature/payment-flow │ └── feature/dashboard-v2 │ ├── release/v1.2.0 │ └── hotfix/critical-bug ``` ### Branch Naming Convention | Tipo | Pattern | Exemplo | |------|---------|---------| | Feature | `feature/<descrição>` | `feature/user-authentication` | | Bugfix | `bugfix/<issue-id>` | `bugfix/issue-123` | | Hotfix | `hotfix/<descrição>` | `hotfix/security-patch` | | Release | `release/<version>` | `release/v1.2.0` | | Experiment | `experiment/<descrição>` | `experiment/new-cache` | **Regras de Nomenclatura:** - Use kebab-case (palavras separadas por hífen) - Seja descritivo mas conciso - Inclua issue ID quando relevante - Evite caracteres especiais ## Commits ### Conventional Commits ``` <type>(<scope>): <description> [optional body] [optional footer(s)] ``` **Types:** | Type | Quando Usar | |------|-------------| | `feat` | Nova funcionalidade | | `fix` | Correção de bug | | `docs` | Apenas documentação | | `style` | Formatação (não afeta código) | | `refactor` | Refatoração (sem feat/fix) | | `perf` | Melhoria de performance | | `test` | Adição/correção de testes | | `chore` | Manutenção (build, deps, etc) | | `ci` | Mudanças em CI/CD | **Exemplos:** ```bash # Feature feat(auth): add OAuth2 login with Google # Bug fix fix(api): handle null response from payment gateway Closes #123 # Breaking change feat(api)!: change response format for /users endpoint BREAKING CHANGE: response now returns array instead of object ``` ### Regras de Commit ``` ┌─────────────────────────────────────────────────────────────┐ │ 1. Commits atômicos - Uma mudança lógica por commit │ │ 2. Mensagem clara - Explica O QUE e POR QUÊ │ │ 3. Presente imperativo - "Add feature" não "Added" │ │ 4. Max 72 chars no título │ │ 5. Body para contexto adicional │ └─────────────────────────────────────────────────────────────┘ ``` **Commit Atômico - Exemplos:** ```bash # ❌ RUIM - Múltiplas mudanças git commit -m "Add login, fix header, update deps" # ✅ BOM - Commits separados git commit -m "feat(auth): add login form" git commit -m "fix(ui): correct header alignment" git commit -m "chore(deps): update React to v18" ``` ## Workflow Diário ### 1. Começar Feature ```bash # Atualizar develop git checkout develop git pull origin develop # Criar branch git checkout -b feature/minha-feature # Trabalhar... git add . git commit -m "feat(scope): description" ``` ### 2. Manter Branch Atualizada ```bash # Opção 1: Rebase (preferido para features) git fetch origin git rebase origin/develop # Opção 2: Merge (se já compartilhou a branch) git fetch origin git merge origin/develop ``` ### 3. Resolver Conflitos ```bash # Durante rebase git rebase origin/develop # Se conflito: # 1. Resolver conflitos nos arquivos # 2. git add <arquivos-resolvidos> # 3. git rebase --continue # Se quiser abortar git rebase --abort ``` ### 4. Preparar para PR ```bash # Squash commits se necessário git rebase -i HEAD~<numero-de-commits> # Marcar commits para squash (s) ou fixup (f) # Push git push origin feature/minha-feature # Se já fez push antes e rebased git push --force-with-lease origin feature/minha-feature ``` ## Pull Requests ### Checklist Antes de Abrir PR - [ ] Código compila sem erros - [ ] Testes passam localmente - [ ] Linter/formatter aplicado - [ ] Branch atualizada com develop - [ ] Commits organizados e descritivos - [ ] Self-review feito ### Template de PR ```markdown ## Descrição [O que este PR faz e por quê] ## Tipo de Mudança - [ ] Feature nova - [ ] Bug fix - [ ] Refatoração - [ ] Documentação - [ ] Outro: ___ ## Como Testar 1. [Passo 1] 2. [Passo 2] 3. [Resultado esperado] ## Checklist - [ ] Código segue padrões do projeto - [ ] Testes adicionados/atualizados - [ ] Documentação atualizada - [ ] Sem breaking changes (ou documentado) ## Screenshots (se aplicável) [Imagens aqui] ## Issues Relacionadas Closes #123 ``` ### Tamanho do PR ``` ┌─────────────────────────────────────────────────────────────┐ │ IDEAL: < 400 linhas de código │ │ MÁXIMO: 1000 linhas (divida se maior) │ │ │ │ PRs menores = Reviews melhores = Menos bugs │ └─────────────────────────────────────────────────────────────┘ ``` ## Comandos Úteis ### Desfazer Mudanças ```bash # Descartar mudanças não commitadas git checkout -- <arquivo> git restore <arquivo> # Git 2.23+ # Desfazer último commit (mantém mudanças) git reset --soft HEAD~1 # Desfazer último commit (descarta mudanças) git reset --hard HEAD~1 # Reverter commit já pushed git revert <commit-hash> ``` ### Stash (Guardar Temporariamente) ```bash # Guardar mudanças git stash git stash save "descrição" # Listar stashes git stash list # Recuperar último stash git stash pop # Recuperar stash específico git stash apply stash@{2} ``` ### Histórico e Busca ```bash # Log bonito git log --oneline --graph --all # Buscar em commits git log --grep="palavra" # Buscar quem mudou linha git blame <arquivo> # Buscar quando código foi adicionado git log -S "código" --source --all ``` ### Cherry-pick ```bash # Aplicar commit específico na branch atual git cherry-pick <commit-hash> # Cherry-pick sem commitar git cherry-pick -n <commit-hash> ``` ## Situações Comuns ### "Commitei na Branch Errada" ```bash # Se ainda não fez push git reset --soft HEAD~1 git stash git checkout branch-correta git stash pop git commit -m "mensagem" ``` ### "Preciso Mudar Mensagem do Último Commit" ```bash # Apenas último commit, não pushed git commit --amend -m "nova mensagem" # Commits mais antigos git rebase -i HEAD~3 # Marcar commit com 'reword' ``` ### "Quero Desfazer Merge" ```bash # Se não fez push git reset --hard HEAD~1 # Se já fez push git revert -m 1 <merge-commit-hash> ``` ### "Branch Divergiu Muito de Develop" ```bash # Opção 1: Rebase incremental git fetch origin git rebase origin/develop # Resolver conflitos commit a commit # Opção 2: Merge git merge origin/develop # Resolver todos conflitos de uma vez ``` ## Anti-Patterns | Anti-Pattern | Problema | Solução | |--------------|----------|---------| | `git add .` cego | Commita arquivos indesejados | `git add -p` ou review antes | | Force push em shared branch | Perde trabalho dos outros | Use `--force-with-lease` | | Commits gigantes | Difícil review e rollback | Commits atômicos | | Branch de longa vida | Conflitos acumulam | Merge frequente ou feature flags | | Mensagens vagas | "fix stuff", "wip" | Conventional commits | --- **Esta skill ativa AUTOMATICAMENTE quando:** - Discussão sobre branches, commits, ou merges - Usuário menciona "git", "PR", "pull request" - Problemas com histórico ou conflitos
عرض على GitHub