git-workflow

SKILL.md

Git Workflow Core Knowledge

Deep Knowledge: Use mcp__documentation__fetch_docs with technology: git-workflow for comprehensive documentation.

When NOT to Use This Skill

This skill focuses on Git workflow and collaboration. Do NOT use for:

  • Git command syntax - Use Git official documentation or man git
  • CI/CD pipelines - Use ci-cd or GitHub Actions specific skills
  • Code quality review - Use code-reviewer agent or clean-code skill
  • Deployment strategies - Use DevOps or infrastructure skills
  • Project management - Use issue tracking and planning tools documentation

Anti-Patterns

Anti-Pattern Why It's Bad Best Practice
Giant commits Hard to review, risky to revert Atomic commits with single purpose
Vague commit messages "fix", "update" Conventional commits with context
Committing directly to main No review, breaks builds Feature branches + PR workflow
Force push to shared branches Destroys history, breaks others Use --force-with-lease, communicate
Merge commits everywhere Cluttered history Rebase feature branches before merge
No PR description Reviewers don't know context Clear description with why/what/how
Large PRs (1000+ lines) Impossible to review Small, focused PRs
Mixing refactor + feature Hard to review, hard to revert Separate refactor and feature PRs
WIP commits in main Unprofessional history Squash before merge

Quick Troubleshooting

Issue Check Solution
Accidental commit to main git status git reset --soft HEAD~1, create branch, commit there
Need to undo last commit Keep changes? git reset --soft HEAD~1 (keep) or --hard (discard)
Merge conflict Conflicting changes Resolve manually, git add, git commit
Pushed wrong code Already pushed? git revert <commit> (safe) or coordinate force push
Lost commits Deleted branch? git reflog, find SHA, git cherry-pick or checkout
Want to change commit message Last commit? git commit --amend (if not pushed)
PR too large > 500 lines Split into multiple PRs with dependencies

Branch Naming

feature/add-user-authentication
bugfix/fix-login-redirect
hotfix/critical-security-patch
release/v1.2.0
chore/update-dependencies
docs/api-documentation

Conventional Commits

<type>(<scope>): <description>

feat: add user authentication
fix: resolve login redirect issue
docs: update API documentation
style: format code with prettier
refactor: extract validation logic
test: add user service tests
chore: update dependencies
perf: optimize database queries

Common Commands

# Branch operations
git checkout -b feature/new-feature
git branch -d feature/merged-branch
git push -u origin feature/new-feature

# Stashing
git stash
git stash pop
git stash list
git stash drop

# History
git log --oneline -20
git log --graph --oneline
git reflog

# Undo changes
git checkout -- file.txt           # Discard file changes
git reset HEAD file.txt            # Unstage file
git reset --soft HEAD~1            # Undo last commit, keep changes
git reset --hard HEAD~1            # Undo last commit, discard changes
git revert <commit>                # Create undo commit

Rebase vs Merge

# Rebase (clean history)
git checkout feature
git rebase main
git push --force-with-lease

# Merge (preserve history)
git checkout main
git merge feature

# Interactive rebase
git rebase -i HEAD~3  # Squash, reorder, edit

Pull Request Best Practices

Do Don't
Small, focused PRs Giant PRs with unrelated changes
Clear description Empty description
Self-review before requesting Push broken code
Respond to feedback promptly Ignore comments
Squash fixup commits Leave WIP commits

Protected Branch Rules

- Require pull request reviews
- Require status checks to pass
- Require branches to be up to date
- No force pushes
- No deletions

Production Readiness

Branch Strategy

main (production)
  └── develop
        ├── feature/user-auth
        ├── feature/payment
        └── bugfix/login-issue

Release Flow:
develop → release/v1.2.0 → main (tag v1.2.0)

Hotfix Flow:
main → hotfix/critical-fix → main + develop

Commit Hooks

# .husky/commit-msg
#!/usr/bin/env sh
. "$(dirname -- "$0")/_/husky.sh"

npx --no -- commitlint --edit $1
// commitlint.config.js
export default {
  extends: ['@commitlint/config-conventional'],
  rules: {
    'type-enum': [2, 'always', [
      'feat', 'fix', 'docs', 'style', 'refactor',
      'test', 'chore', 'perf', 'ci', 'revert'
    ]],
    'subject-max-length': [2, 'always', 72],
    'body-max-line-length': [2, 'always', 100],
  },
};

Automated Changelog

// release.config.js (semantic-release)
export default {
  branches: ['main'],
  plugins: [
    '@semantic-release/commit-analyzer',
    '@semantic-release/release-notes-generator',
    '@semantic-release/changelog',
    '@semantic-release/npm',
    '@semantic-release/github',
    ['@semantic-release/git', {
      assets: ['CHANGELOG.md', 'package.json'],
      message: 'chore(release): ${nextRelease.version}'
    }]
  ]
};

Code Review Checklist

## PR Review Checklist

### Code Quality
- [ ] Follows project conventions
- [ ] No unnecessary complexity
- [ ] Proper error handling
- [ ] No security vulnerabilities

### Testing
- [ ] Unit tests for new code
- [ ] Integration tests if needed
- [ ] All tests passing

### Documentation
- [ ] Code is self-documenting
- [ ] Complex logic has comments
- [ ] API changes documented

### Performance
- [ ] No N+1 queries
- [ ] No memory leaks
- [ ] Appropriate caching

GitHub Actions Integration

# .github/workflows/pr-check.yml
name: PR Check

on: pull_request

jobs:
  lint-commits:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0

      - name: Lint commits
        uses: wagoid/commitlint-github-action@v5

  validate-pr:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Check PR title
        uses: amannn/action-semantic-pull-request@v5
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

Git Configuration

# ~/.gitconfig
[user]
    name = Your Name
    email = your.email@example.com
    signingkey = YOUR_GPG_KEY

[commit]
    gpgsign = true

[pull]
    rebase = true

[fetch]
    prune = true

[init]
    defaultBranch = main

[alias]
    co = checkout
    br = branch
    ci = commit
    st = status
    lg = log --oneline --graph --decorate
    undo = reset --soft HEAD~1

Monitoring Metrics

Metric Target
PR merge time < 24h
Review turnaround < 4h
Failed CI on PR < 10%
Commit message compliance 100%

Checklist

  • Branch naming convention
  • Conventional commits
  • Commit message linting
  • Pre-commit hooks
  • PR template
  • Code review checklist
  • Branch protection rules
  • Automated changelog
  • Semantic versioning
  • GPG commit signing

Reference Documentation

Weekly Installs
15
GitHub Stars
2
First Seen
10 days ago
Installed on
gemini-cli14
amp14
cline14
github-copilot14
codex14
kimi-cli14