
Git Workflow
- 98 installs
- 44 repo stars
- Updated May 22, 2026
- bagelhole/devops-security-agent-skills
Pick and implement a team Git branching model, PR habits, and release rhythm on GitHub, GitLab, or Bitbucket.
About
Git Workflow is a procedural agent skill for solo builders and tiny teams who need a written, repeatable version-control policy instead of everyone guessing branch names and merge rules. It activates when you are standing up collaboration on a new repo, migrating from chaotic long-lived branches, or aligning release cadence with CI/CD maturity. The skill emphasizes trunk-based development for continuous deployment scenarios—short branches, frequent rebase, fast merge to main—while framing GitFlow and GitHub Flow as alternatives when release trains or review gates differ. Expect bash-level recipes for checkout, rebase, merge, and cleanup rather than a hosted-platform click-by-click wizard. Pair it with your existing CI skill so branch protection and required checks match the strategy you choose. Outcomes are clearer PR etiquette, fewer merge conflicts, and a branch model that matches how often you actually ship.
- Compares trunk-based development, GitFlow, and GitHub Flow with when-to-use guidance
- Documents short-lived feature branches with rebase-onto-main and same-day merge discipline
- Covers establishing PR processes and release management for hosted Git remotes
- Targets teams improving collaboration and review practices, not one-off commits
Git Workflow by the numbers
- 98 all-time installs (skills.sh)
- Ranked #228 of 733 Git & Pull Requests skills by installs in the Skillselion catalog
- Security screen: MEDIUM risk (skills.sh audit)
- Data as of Jul 28, 2026 (Skillselion catalog sync)
npx skills add https://github.com/bagelhole/devops-security-agent-skills --skill git-workflowAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 98 |
|---|---|
| repo stars | ★ 44 |
| Security audit | 3 / 3 scanners passed |
| Last updated | May 22, 2026 |
| Repository | bagelhole/devops-security-agent-skills ↗ |
What it does
Pick and implement a team Git branching model, PR habits, and release rhythm on GitHub, GitLab, or Bitbucket.
Files
Git Workflow
Implement effective branching strategies and pull request workflows for team collaboration.
When to Use This Skill
Use this skill when:
- Establishing team Git workflows
- Implementing branching strategies
- Configuring pull request processes
- Setting up release management
- Improving code review practices
Prerequisites
- Git installed
- Repository hosting (GitHub, GitLab, Bitbucket)
- Basic Git knowledge
Branching Strategies
Trunk-Based Development
Best for: Continuous deployment, small teams, mature CI/CD
main ─────●─────●─────●─────●─────●─────●─────●
│ │ │ │ │ │
└─● └─● └─● └─● └─● └─●
feature branches (short-lived)# Create short-lived feature branch
git checkout main
git pull origin main
git checkout -b feature/add-login
# Work and commit frequently
git add .
git commit -m "feat: add login form"
# Keep branch updated
git fetch origin
git rebase origin/main
# Merge quickly (same day ideally)
git checkout main
git pull origin main
git merge feature/add-login
git push origin main
git branch -d feature/add-loginGitHub Flow
Best for: Continuous delivery, web applications
main ─────●─────●───────────●─────────────●─────●
│ ↑ ↑ ↑
└───●───●───┘ │ │
feature/login │ │
│ │
└───●───●───●───●───────┘ │
feature/dashboard │
│
└───●─────────────────────────┘
hotfix/security-patch# Create feature branch from main
git checkout main
git pull origin main
git checkout -b feature/user-dashboard
# Push and create PR
git push -u origin feature/user-dashboard
# After review, merge via PR (squash recommended)
# Delete branch after mergeGitFlow
Best for: Scheduled releases, versioned products
main ────────●────────────────●──────────────●
↑ ↑ ↑
release ────────┼────●───●──────┼──────────────┼
│ │ │ │ │
develop ───●────●────┼───●──●───●───●───●───●──┼
│ │ │ │ │ │
feature ───┴─────────┘ │ │ │ │
│ │ │ │
hotfix ────────────────────┴───────┼───┼──────┘
│ │
feature ────────────────────────────┴───┘# Initialize GitFlow
git flow init
# Start feature
git flow feature start user-auth
# Finish feature (merges to develop)
git flow feature finish user-auth
# Start release
git flow release start 1.0.0
# Finish release (merges to main and develop)
git flow release finish 1.0.0
# Hotfix
git flow hotfix start security-fix
git flow hotfix finish security-fixCommit Conventions
Conventional Commits
<type>(<scope>): <description>
[optional body]
[optional footer(s)]Types:
feat: New featurefix: Bug fixdocs: Documentationstyle: Formattingrefactor: Code restructuringtest: Adding testschore: Maintenance
Examples:
git commit -m "feat(auth): add OAuth2 login support"
git commit -m "fix(api): handle null response from payment service"
git commit -m "docs: update API documentation for v2 endpoints"
git commit -m "refactor(db): optimize user query performance"
# Breaking change
git commit -m "feat(api)!: change response format for user endpoint
BREAKING CHANGE: The user endpoint now returns an object instead of array"Commit Message Template
# Create template file ~/.gitmessage
# Subject line (50 chars max)
# Body (72 chars per line max)
# - What changed
# - Why it changed
# - Any side effects
# Footer
# Fixes #123
# Co-authored-by: Name <email>
# Configure Git to use template
git config --global commit.template ~/.gitmessagePull Request Workflow
PR Template
<!-- .github/pull_request_template.md -->
## Description
Brief description of changes
## Type of Change
- [ ] Bug fix (non-breaking change)
- [ ] New feature (non-breaking change)
- [ ] Breaking change
- [ ] Documentation update
## Testing
- [ ] Unit tests added/updated
- [ ] Integration tests added/updated
- [ ] Manual testing performed
## Checklist
- [ ] Code follows project style guidelines
- [ ] Self-review performed
- [ ] Documentation updated
- [ ] No new warnings introduced
## Related Issues
Closes #
## Screenshots (if applicable)Branch Protection Rules
# GitHub branch protection
branch_protection:
branch: main
required_pull_request_reviews:
required_approving_review_count: 1
dismiss_stale_reviews: true
require_code_owner_reviews: true
required_status_checks:
strict: true
contexts:
- "ci/tests"
- "ci/lint"
restrictions:
users: []
teams: ["maintainers"]
enforce_admins: true
required_linear_history: true
allow_force_pushes: false
allow_deletions: falseCode Owners
# .github/CODEOWNERS
# Default owners
* @team-leads
# Frontend code
/src/frontend/ @frontend-team
*.tsx @frontend-team
*.css @frontend-team
# Backend code
/src/api/ @backend-team
/src/services/ @backend-team
# Infrastructure
/terraform/ @platform-team
/k8s/ @platform-team
Dockerfile @platform-team
# Documentation
/docs/ @tech-writers
*.md @tech-writersGit Hooks
Pre-commit Hook
#!/bin/sh
# .git/hooks/pre-commit
# Run linting
npm run lint
if [ $? -ne 0 ]; then
echo "Linting failed. Fix errors before committing."
exit 1
fi
# Run tests
npm run test:unit
if [ $? -ne 0 ]; then
echo "Tests failed. Fix tests before committing."
exit 1
fi
# Check for debug statements
if grep -r "console.log\|debugger\|binding.pry" --include="*.js" --include="*.ts" --include="*.rb" src/; then
echo "Remove debug statements before committing."
exit 1
fiUsing Husky
// package.json
{
"husky": {
"hooks": {
"pre-commit": "lint-staged",
"commit-msg": "commitlint -E HUSKY_GIT_PARAMS"
}
},
"lint-staged": {
"*.{js,ts,tsx}": ["eslint --fix", "prettier --write"],
"*.{css,scss}": ["prettier --write"]
}
}Commitlint Configuration
// commitlint.config.js
module.exports = {
extends: ['@commitlint/config-conventional'],
rules: {
'type-enum': [
2,
'always',
['feat', 'fix', 'docs', 'style', 'refactor', 'test', 'chore', 'revert']
],
'subject-max-length': [2, 'always', 72],
'body-max-line-length': [2, 'always', 100]
}
};Release Workflow
Automated Release with Tags
# Create annotated tag
git tag -a v1.0.0 -m "Release version 1.0.0"
# Push tag
git push origin v1.0.0
# Create release from tag (GitHub CLI)
gh release create v1.0.0 \
--title "Release 1.0.0" \
--notes "Release notes here" \
--target mainChangelog Generation
# Using conventional-changelog
npx conventional-changelog -p angular -i CHANGELOG.md -s
# Using git-cliff
git cliff -o CHANGELOG.mdCommon Git Operations
Rebase vs Merge
# Rebase (clean history)
git checkout feature/my-feature
git rebase main
git push --force-with-lease
# Merge (preserve history)
git checkout main
git merge feature/my-feature
# Squash merge (single commit)
git merge --squash feature/my-feature
git commit -m "feat: add feature X"Cherry Pick
# Apply specific commit to current branch
git cherry-pick abc123
# Cherry pick range
git cherry-pick abc123..def456
# Cherry pick without committing
git cherry-pick -n abc123Interactive Rebase
# Clean up last 3 commits
git rebase -i HEAD~3
# In editor:
# pick abc123 First commit
# squash def456 Second commit
# reword ghi789 Third commitCommon Issues
Issue: Merge Conflicts
Problem: Conflicts when merging branches Solution: Rebase frequently, communicate with team, use smaller PRs
Issue: Diverged Branches
Problem: Local branch far behind remote Solution: git pull --rebase or git fetch && git rebase origin/main
Issue: Accidental Commit to Wrong Branch
Problem: Committed to main instead of feature Solution: git reset HEAD~1, checkout correct branch, recommit
Best Practices
- Keep branches short-lived (< 1 week)
- Write meaningful commit messages
- Use PR templates consistently
- Require code reviews
- Protect main/master branch
- Automate checks with CI
- Squash merge for clean history
- Delete branches after merge
Related Skills
- semantic-versioning - Version management
- github-actions - CI/CD automation
- feature-flags - Feature management
Related skills
FAQ
Is Git Workflow safe to install?
skills.sh reports 3 of 3 security scanners passed. Review the Security Audits panel on this page before installing in production.