git-workflow

veerababumanyam's avatarfrom veerababumanyam

Git workflow conventions for RawDrive. Use when creating commits, branches, pull requests, or reviewing code changes.

⭐0stars🔀0forks📁View on GitHub🕐Updated Jan 9, 2026⬇️1downloads

When & Why to Use This Skill

This Claude skill provides a comprehensive Git workflow framework designed to standardize version control practices for development teams. It offers clear conventions for branch naming, structured commit messages, and pull request management, ensuring repository consistency, easier code reviews, and a professional project history.

Use Cases

  • Standardizing repository organization by enforcing specific branch naming patterns such as feature/, fix/, and refactor/.
  • Generating machine-readable commit messages following the Conventional Commits specification to facilitate automated changelog generation.
  • Streamlining the Pull Request process using structured templates that include testing checklists and size guidelines for faster approvals.
  • Improving code review quality by providing standardized comment prefixes (e.g., 🔴 Blocking, 💡 Suggestion) and etiquette guidelines.
  • Onboarding new developers quickly by providing a unified set of Git aliases and common workflow command sequences.
namegit-workflow
aliases[git, commits, branches, pr, pull-request, version-control]
descriptionGit workflow conventions for RawDrive. Use when creating commits, branches, pull requests, or reviewing code changes.

Git Workflow

Branch Naming

feature/add-album-sharing      # New features
fix/photo-upload-timeout       # Bug fixes
refactor/gallery-service       # Code improvements
docs/api-documentation         # Documentation
chore/update-dependencies      # Maintenance
hotfix/critical-auth-bug       # Production fixes

Pattern

{type}/{short-description}
Type Use Case
feature/ New functionality
fix/ Bug fixes
refactor/ Code restructuring (no behavior change)
docs/ Documentation only
chore/ Build, deps, tooling
hotfix/ Urgent production fixes

Commit Messages

Format

type(scope): description

[optional body]

[optional footer]

Examples

feat(gallery): add bulk photo selection
fix(upload): handle timeout on large files
refactor(auth): extract token validation to middleware
docs(api): add gallery endpoints documentation
test(photos): add integration tests for upload flow
chore(deps): update React to v19.1

# With ticket reference
feat(gallery): add sharing feature [RAW-123]

# With breaking change
feat(api)!: change gallery response format

BREAKING CHANGE: Gallery response now uses `items` instead of `galleries`

Types

Type Description
feat New feature
fix Bug fix
refactor Code change (no feature/fix)
docs Documentation
test Adding/updating tests
chore Build, deps, config
style Formatting (no code change)
perf Performance improvement

Scopes (Common)

Scope Area
gallery Gallery features
upload Upload system
auth Authentication
api API endpoints
ui UI components
db Database/migrations
ai AI features
storage R2/BYOS storage

Pull Request Guidelines

PR Title

Same format as commit messages:

feat(gallery): add bulk selection and download

PR Template

## Summary

Brief description of what this PR does.

## Changes

- Added bulk selection to gallery grid
- Implemented ZIP download for selected photos
- Added progress indicator for downloads

## Testing

- [ ] Unit tests added/updated
- [ ] Manual testing completed
- [ ] Tested in dark mode
- [ ] Tested on mobile

## Screenshots

(if UI changes)

## Related Issues

Closes #123

PR Checklist

Before requesting review:

  • Branch is up to date with main
  • All tests pass
  • Linting passes (npm run lint, ruff check)
  • No console.log or debug code
  • Commit messages follow conventions
  • Self-reviewed the diff
  • Added tests for new functionality
  • Updated documentation if needed

PR Size Guidelines

Size Lines Changed Review Time
XS < 50 ~10 min
S 50-200 ~30 min
M 200-500 ~1 hour
L 500-1000 Split if possible
XL > 1000 Must split

Prefer smaller PRs - easier to review, faster to merge, less risk.

Git Commands

Daily Workflow

# Start new feature
git checkout main
git pull origin main
git checkout -b feature/my-feature

# Work on feature
git add -A
git commit -m "feat(scope): description"

# Push and create PR
git push -u origin feature/my-feature
gh pr create --fill

Keeping Branch Updated

# Rebase on main (preferred for clean history)
git fetch origin
git rebase origin/main

# Or merge (if conflicts are complex)
git merge origin/main

Fixing Commits

# Amend last commit (before push)
git commit --amend -m "fix(scope): better message"

# Interactive rebase (before push)
git rebase -i HEAD~3

# Undo last commit (keep changes)
git reset --soft HEAD~1

Stashing

# Save work temporarily
git stash push -m "WIP: gallery feature"

# List stashes
git stash list

# Apply and remove
git stash pop

# Apply specific stash
git stash apply stash@{2}

Protected Branches

main

  • Requires PR with approval
  • Must pass CI checks
  • No force push
  • Squash merge preferred

Release Process

# Tag release
git tag -a v1.2.0 -m "Release v1.2.0"
git push origin v1.2.0

# Hotfix process
git checkout -b hotfix/critical-bug main
# ... fix bug ...
git commit -m "fix(auth): critical security patch"
git push -u origin hotfix/critical-bug
# Create PR to main

Code Review Etiquette

As Author

  • Keep PRs focused and small
  • Respond to feedback promptly
  • Don't take feedback personally
  • Explain complex changes in PR description

As Reviewer

  • Be constructive and specific
  • Suggest, don't demand
  • Approve if changes are minor
  • Use conventional comments:
# Blocking issue
🔴 This will cause a null pointer exception

# Suggestion (non-blocking)
💡 Consider using useMemo here for performance

# Question
❓ Why was this approach chosen over X?

# Nitpick (optional)
🔵 Nit: Prefer const over let here

.gitignore Essentials

# Dependencies
node_modules/
.venv/
__pycache__/

# Build
dist/
build/
*.egg-info/

# Environment
.env
.env.local
*.pem

# IDE
.idea/
.vscode/
*.swp

# OS
.DS_Store
Thumbs.db

# Logs
*.log
logs/

# Test
coverage/
.pytest_cache/

Useful Aliases

# Add to ~/.gitconfig
[alias]
  co = checkout
  br = branch
  ci = commit
  st = status
  lg = log --oneline --graph --decorate -20
  unstage = reset HEAD --
  last = log -1 HEAD
  amend = commit --amend --no-edit