skills/maroffo/claude-forge/source-control

source-control

SKILL.md

ABOUTME: Git conventional commit format and version control best practices

ABOUTME: Commit message standards, branch strategies, workflow patterns

Source Control

Quick Reference

git commit -m "feat: add user authentication"
git checkout -b feat/user-auth
git fetch origin && git rebase origin/main
git stash && git stash pop

Conventional Commits

Format: <type>(<scope>): <subject> (scope/body/footer optional)

Type Use
feat New feature
fix Bug fix
docs Documentation
style Formatting
refactor Code restructure
perf Performance
test Tests
chore Maintenance
ci CI/CD
build Build system
revert Revert commit

Rules: Imperative mood, present tense, lowercase, no period, max 50 chars

# Good
git commit -m "feat(auth): add JWT validation"
git commit -m "fix: resolve race condition"

# Bad
git commit -m "Fixed stuff"      # Not conventional
git commit -m "Feat: Add thing"  # Capital letter

Commit Process

  1. Check state:

    git status && git diff HEAD && git branch --show-current && git log --oneline -5
    
  2. Verify NOT on main/master (abort if so, unless authorized)

  3. Stage specific files (never git add -A):

    git add <specific-files>
    
  4. Commit with conventional format:

    git commit -m "<type>(<scope>): <subject>"
    

Branch Naming

Type Pattern
Feature feat/user-auth, feature/dashboard
Fix fix/login-bug, bugfix/api-error
Hotfix hotfix/security-patch
Chore chore/update-deps

Workflow

# Start feature
git checkout main && git pull origin main
git checkout -b feat/user-auth

# Keep up to date
git fetch origin && git rebase origin/main

# After PR merged
git checkout main && git pull
git branch -d feat/user-auth
Use When
Rebase Keep feature branch current, clean linear history
Merge Integrate to main (via PR), preserve history

Recovery

Situation Command
Undo last commit (keep changes) git reset --soft HEAD~1
Undo staged files git reset HEAD <file>
Discard file changes git checkout -- <file>
Recover deleted branch git reflog then git checkout -b <branch> <sha>
Amend last commit git commit --amend -m "new message"
Revert pushed commit git revert <sha>

Conflicts

Resolve: git status to see conflicts, edit files to remove markers, git add <resolved>, then git rebase --continue (or git merge --continue). Use git rebase --abort to bail out.


Hooks

Pre-commit: .git/hooks/pre-commit -- run linters, formatters, tests per language.

Commit-msg: Validate conventional format (commitlint, husky, lefthook).


Best Practices

DO DON'T
Conventional commits Generic messages ("fix", "update")
Small, logical commits Huge unrelated changes
Run tests before commit Push broken code
Use branches Commit to main directly
--force-with-lease --force on shared branches

Resources

Weekly Installs
11
GitHub Stars
8
First Seen
14 days ago
Installed on
gemini-cli11
opencode11
codebuddy11
github-copilot11
codex11
kimi-cli11