ABOUTME: Git workflow skill for ecommerce project
ABOUTME: Covers Conventional Commits, GitHub Flow, and team collaboration
Source Control Management (SCM) Skill
Quick Reference
Principle Rule
Atomic Commits One logical change per commit
Conventional Commits type(scope): description format
Branch Naming type/ticket-description format
PR Size < 400 lines of code changes
Never Force Push To shared branches (main)
Branching Strategy (GitHub Flow)
main ─────●───────●───────●───────●────── │ ↑ │ ↑ ↓ │ ↓ │ feature ──●──●──●─┘ fix ──●──●────┘
Branches:
-
main : Always deployable (protected)
-
feature/* : New features
-
fix/* : Bug fixes
-
chore/* : Maintenance
-
docs/* : Documentation
Conventional Commits
Format
<type>(<scope>): <description>
[optional body]
[optional footer]
Types
Type Description Example
feat
New feature feat(cart): add quantity selector
fix
Bug fix fix(auth): correct token refresh logic
docs
Documentation docs(api): update endpoint docs
style
Formatting style(frontend): fix indentation
refactor
Code restructure refactor(orders): extract validation
test
Tests test(catalog): add search tests
chore
Build/tooling chore(deps): update dependencies
perf
Performance perf(redis): optimize cache keys
ci
CI config ci(actions): add security scan
Scopes (Ecommerce)
Scope Area
auth
Authentication module
catalog
Products, categories
cart
Shopping cart
orders
Order processing
checkout
Checkout flow
frontend
Next.js app
backend
Fastify API
infra
Terraform/K8s
ci
GitHub Actions
Branch Naming
<type>/<ticket>-<description>
Examples:
- feature/ECOM-123-user-wishlist
- fix/ECOM-456-cart-total-calculation
- chore/ECOM-789-update-node-version
Commit Workflow
TDD Commit Pattern
Red phase
git add tests/ git commit -m "test(auth): add login validation tests"
Green phase
git add src/ git commit -m "feat(auth): implement login validation"
Refactor phase
git add src/ git commit -m "refactor(auth): extract validation helpers"
Multi-line Commit (HEREDOC)
git commit -m "$(cat <<'EOF' feat(cart): add persistent cart storage
- Store cart in Redis with user session
- Expire after 7 days of inactivity
- Merge guest cart on login
Closes #123 EOF )"
Pull Request Workflow
Before Creating PR
1. Ensure branch is up to date
git fetch origin git rebase origin/main
2. Run tests locally
npm run test
3. Check linting
npm run lint
4. Review changes
git diff origin/main...HEAD git log origin/main..HEAD --oneline
PR Description Template
Summary
- Brief description (1-3 bullet points)
Changes
- Added X feature
- Modified Y component
- Fixed Z bug
Testing
- Unit tests pass
- Integration tests pass
- Manual testing completed
Screenshots (if UI changes)
[Before/After]
Related Issues
Closes #123
PR Size Guidelines
Size Lines Review Time
XS < 50 Minutes
S 50-200 < 30 min
M 200-400 < 1 hour
L 400-800 Hours
XL
800 Split required
Conflict Resolution
Understanding Conflicts
<<<<<<< HEAD (current branch) const timeout = 5000;
const timeout = 10000;
feature-branch (incoming)
Resolution Commands
Keep current branch version
git checkout --ours path/to/file
Keep incoming version
git checkout --theirs path/to/file
After manual resolution
git add path/to/file git rebase --continue
Safety Rules
Never Do
Never force push to main
git push --force origin main # DANGEROUS
Never rebase shared branches
git rebase main # on shared feature branch
Never reset pushed commits
git reset --hard HEAD~3 # if already pushed
Safe Alternatives
Use force-with-lease
git push --force-with-lease
Merge instead of rebase on shared
git merge origin/main
Revert instead of reset
git revert <sha>
Common Operations
Undo Operations
Undo last commit (keep changes)
git reset --soft HEAD~1
Undo uncommitted changes
git checkout -- path/to/file
Revert pushed commit
git revert <sha>
Stashing
Stash changes
git stash save "WIP: feature description"
List stashes
git stash list
Apply and drop
git stash pop
Checklist
Before committing:
-
Changes are atomic (one logical change)
-
Commit message follows Conventional Commits
-
Tests pass locally
-
No debug code or console.logs
-
No secrets or credentials
-
Branch is up to date with main
Before creating PR:
-
Rebased on latest main
-
All commits have meaningful messages
-
PR is < 400 lines
-
Description explains what and why
-
Related issues linked
-
CI checks pass