Claude-skill-registry-data managing-git
Guides git workflows, branching strategies, commit conventions, and version control best practices. Use when managing repositories, creating branches, or handling merges.
install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry-data
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry-data "$T" && mkdir -p ~/.claude/skills && cp -r "$T/data/managing-git-cloudai-x-opencode-workflow" ~/.claude/skills/majiayu000-claude-skill-registry-data-managing-git && rm -rf "$T"
manifest:
data/managing-git-cloudai-x-opencode-workflow/SKILL.mdsource content
Managing Git
Best practices for version control, branching strategies, and collaborative development.
When to Use This Skill
- Setting up branching strategies
- Writing commit messages
- Handling merges and conflicts
- Managing releases
- Code review workflows
- Maintaining clean history
Branching Strategies
Git Flow
main ─────●─────────────────────●─────────────────●────▶ \ / / release \───────●─────────● / \ / develop ───────●───────●───────●──────●───────●────────▶ \ \ \ \ feature \───────●───────● \───●───● \ \ hotfix \ \───●────▶ main
| Branch | Purpose | Branches From | Merges Into |
|---|---|---|---|
| Production code | - | - |
| Integration | main | release |
| New features | develop | develop |
| Release prep | develop | main, develop |
| Production fixes | main | main, develop |
Use when: Scheduled releases, multiple versions supported
GitHub Flow
main ─────●─────●─────●─────●─────●────▶ \ / \ / \ / feature ●─● ●─● ●─● PR PR PR
| Branch | Purpose |
|---|---|
| Always deployable |
| All changes (features, fixes) |
Use when: Continuous deployment, simple workflow
Trunk-Based Development
main ─────●──●──●──●──●──●──●──●──●──●────▶ │ │ │ │ │ │ │ │ │ │ ● ● ● ● ● ● ● ● ● ● Small, frequent commits (often direct to main)
Use when: High trust teams, strong CI/CD, frequent deploys
Commit Message Conventions
Conventional Commits
<type>(<scope>): <subject> <body> <footer>
Types
| Type | Description | Example |
|---|---|---|
| New feature | |
| Bug fix | |
| Documentation | |
| Formatting | |
| Code restructuring | |
| Adding tests | |
| Maintenance | |
| Performance | |
| CI/CD changes | |
Good vs Bad Commits
BAD: - "fix" - "update code" - "WIP" - "changes" - "asdfasdf" GOOD: - "fix(auth): prevent session timeout on idle" - "feat(cart): add quantity validation" - "refactor(api): extract common error handling"
Commit Body Guidelines
fix(payment): prevent double charge on retry The payment gateway timeout was causing the retry logic to submit duplicate charges. Added idempotency key to prevent double-processing. Closes #1234
- First line: 50 chars max, imperative mood
- Body: Wrap at 72 chars, explain why, not what
- Footer: Reference issues, breaking changes
Branch Naming Conventions
Pattern
<type>/<ticket>-<short-description>
Examples
| Type | Example |
|---|---|
| Feature | |
| Bugfix | |
| Hotfix | |
| Chore | |
| Docs | |
Branch Rules
- Lowercase with hyphens
- Include ticket number when available
- Keep short but descriptive
- Delete after merge
Git Workflow Commands
Daily Workflow
# Start new feature git checkout main git pull origin main git checkout -b feature/AUTH-123-add-login # Work on feature git add -p # Stage hunks interactively git commit -m "feat(auth): add login form" # Keep up to date git fetch origin git rebase origin/main # Preferred: clean history # OR git merge origin/main # Alternative: preserves context # Push and create PR git push -u origin feature/AUTH-123-add-login
Useful Commands
| Command | Purpose |
|---|---|
| Save uncommitted changes temporarily |
| Restore stashed changes |
| Modify last commit |
| Interactive rebase (squash, reorder) |
| Apply specific commit |
| Binary search for bug introduction |
| View all HEAD movements (recovery) |
Cleanup Commands
# Delete merged branches locally git branch --merged | grep -v main | xargs git branch -d # Prune remote tracking branches git fetch --prune # Clean untracked files (careful!) git clean -fd
Handling Conflicts
Conflict Resolution Flow
1. Identify conflicts git status 2. Open conflicted files <<<<<<< HEAD your changes ======= their changes >>>>>>> feature-branch 3. Resolve (keep one, combine, or rewrite) 4. Mark resolved git add <resolved-file> 5. Continue git rebase --continue # if rebasing git commit # if merging
Prevention Strategies
- Small, frequent merges - Reduce conflict scope
- Communication - Coordinate on shared files
- Feature flags - Reduce long-lived branches
- Clear ownership - Minimize overlapping work
Pull Request Best Practices
PR Checklist
- Branch is up to date with main
- Tests pass locally
- Linting passes
- Self-review completed
- Documentation updated
- Ticket/issue linked
- Screenshots for UI changes
PR Size Guidelines
| Size | Lines Changed | Review Time | Recommendation |
|---|---|---|---|
| Small | 1-100 | 15 min | Ideal |
| Medium | 100-400 | 30-60 min | Acceptable |
| Large | 400+ | 1+ hour | Split if possible |
PR Description Template
## Summary Brief description of changes ## Changes - Added X - Modified Y - Removed Z ## Testing - [ ] Unit tests added - [ ] Manual testing done ## Screenshots (if applicable) [Before/After images] ## Related Issues Closes #123
Release Management
Semantic Versioning
MAJOR.MINOR.PATCH │ │ │ │ │ └── Bug fixes (backward compatible) │ └── New features (backward compatible) └── Breaking changes
Release Process
# Create release branch git checkout -b release/v1.2.0 develop # Bump version, update changelog # ... make changes ... # Merge to main and tag git checkout main git merge release/v1.2.0 git tag -a v1.2.0 -m "Release v1.2.0" git push origin main --tags # Merge back to develop git checkout develop git merge release/v1.2.0
Changelog Format
# Changelog ## [1.2.0] - 2024-01-15 ### Added - OAuth2 authentication support ### Changed - Improved error messages ### Fixed - Memory leak in cache handler ### Deprecated - Old authentication method (use OAuth2) ### Removed - Legacy API v1 endpoints
Git Hooks
Common Hooks
| Hook | Timing | Use Case |
|---|---|---|
| Before commit | Linting, formatting |
| After message | Validate message format |
| Before push | Run tests |
| After merge | Install dependencies |
Example pre-commit
#!/bin/sh # .git/hooks/pre-commit # Run linter npm run lint if [ $? -ne 0 ]; then echo "Linting failed. Please fix errors." exit 1 fi # Run tests npm test if [ $? -ne 0 ]; then echo "Tests failed. Please fix before committing." exit 1 fi
Using Husky (Node.js)
// package.json { "husky": { "hooks": { "pre-commit": "lint-staged", "commit-msg": "commitlint -E HUSKY_GIT_PARAMS" } } }
Troubleshooting
Common Issues
| Problem | Solution |
|---|---|
| Accidental commit to main | (before push) |
| Wrong branch | , switch, |
| Need to undo merge | |
| Lost commits | to find, |
| Large file committed | or BFG Repo-Cleaner |
Recovery Commands
# Undo last commit (keep changes) git reset --soft HEAD~1 # Undo last commit (discard changes) git reset --hard HEAD~1 # Recover deleted branch git reflog git checkout -b recovered-branch <sha> # Undo a pushed commit (safe) git revert <sha>
Anti-Patterns to Avoid
- Force pushing to shared branches - Breaks others' history
- Giant commits - Hard to review, hard to bisect
- Vague commit messages - "fix" tells nothing
- Long-lived branches - Merge conflict hell
- Committing generated files - Bloats repo, causes conflicts
- Committing secrets - Security risk (even after removal)
- Rebasing public history - Breaks collaborators
- Ignoring CI failures - Broken windows effect
Quick Reference
BRANCHES: main → Production (protected) develop → Integration (Git Flow) feature/* → New work fix/* → Bug fixes hotfix/* → Production emergencies COMMITS: feat(scope): add feature fix(scope): fix bug docs(scope): update docs refactor(scope): restructure code DAILY FLOW: git checkout -b feature/ticket-desc git add -p && git commit git rebase origin/main git push -u origin feature/ticket-desc VERSIONING: MAJOR.MINOR.PATCH Breaking.Feature.Bugfix