Skip to content
Back to skills

Branch Strategy

ASecurity

Git branching strategies and workflows. Use when setting up a project's branching model, discussing Git workflow, or deciding between trunk-based and Git Flow approaches.

  • 3 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added October 14, 2026
ai-agentsgobashrefactoringgitapici/cdsecuritydocumentation

Works with

  • claude code
  • api

Security analysis

A100/100

Scanned October 14, 2026

npx -y skills add peopleforrester/claude-dotfiles --skill branch-strategy --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Branch Strategy?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Branch Strategy
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/peopleforrester-branch-strategy/badge)](https://www.skillsdirectory.com/skills/peopleforrester-branch-strategy)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: branch-strategy
description: |
  Git branching strategies and workflows. Use when setting up a project's
  branching model, discussing Git workflow, or deciding between trunk-based
  and Git Flow approaches.
license: MIT
compatibility: Claude Code 2.1+
metadata:
  author: peopleforrester
  version: "1.0.0"
  tags:
    - git
    - workflow
    - branching
---

# Branch Strategy Guide

Choose and implement the right Git branching strategy.

## When to Use

- Setting up a new project's Git workflow
- Discussing branching strategies
- Deciding between trunk-based and feature branches
- Establishing team conventions

## Strategy Comparison

| Strategy | Best For | Team Size | Release Frequency |
|----------|----------|-----------|-------------------|
| Trunk-Based | Continuous deployment | Any | Daily/Hourly |
| GitHub Flow | Web apps, SaaS | Small-Medium | Daily/Weekly |
| Git Flow | Versioned releases | Medium-Large | Scheduled |

## Trunk-Based Development

### Overview

```
main ─────●─────●─────●─────●─────●─────●───→
          │     │     │           │     │
          └─●───┘     └─────●─────┘     └─●
          (short-lived feature branches)
```

### Characteristics

- Single main branch (`main` or `trunk`)
- Short-lived feature branches (< 1 day)
- Merge to main frequently
- Feature flags for incomplete work
- Continuous integration required

### Workflow

```bash
# Start feature
git checkout main
git pull
git checkout -b feat/add-login

# Work in small increments
git commit -m "feat: add login form"
git push -u origin feat/add-login

# Create PR same day
gh pr create --title "feat: add login form"

# Merge quickly (after review)
gh pr merge --squash
```

### When to Use

- Experienced team with good CI/CD
- Continuous deployment
- Feature flags available
- High test coverage

## GitHub Flow

### Overview

```
main ─────●─────────────●─────────────●───→
          │             │             │
          └──●──●──●────┘             │
          feature/login               │
                        └──●──●──●────┘
                        feature/dashboard
```

### Characteristics

- `main` is always deployable
- Feature branches for all changes
- PRs required for merging
- Deploy from `main` after merge

### Workflow

```bash
# Start feature
git checkout main
git pull
git checkout -b feature/user-dashboard

# Develop with multiple commits
git commit -m "feat: add dashboard layout"
git commit -m "feat: add metrics widgets"
git commit -m "test: add dashboard tests"
git push -u origin feature/user-dashboard

# Create PR
gh pr create --title "feat: add user dashboard"

# After review, merge
gh pr merge --squash

# Deploy main
```

### Branch Naming

```
feature/description    # New features
fix/description        # Bug fixes
docs/description       # Documentation
refactor/description   # Refactoring
test/description       # Test additions
```

### When to Use

- Web applications
- Continuous deployment
- Small to medium teams
- Simple release process

## Git Flow

### Overview

```
main     ─────●───────────────────●───────→
              │                   │
develop ──●───●───●───●───●───●───●───●───→
          │       │   │       │
          └─●─●───┘   │       │
          feature/a   │       │
                      └─●─●───┘
                      release/1.0
```

### Branches

| Branch | Purpose | Lifetime |
|--------|---------|----------|
| `main` | Production code | Permanent |
| `develop` | Integration branch | Permanent |
| `feature/*` | New features | Temporary |
| `release/*` | Release preparation | Temporary |
| `hotfix/*` | Production fixes | Temporary |

### Workflow

```bash
# Start feature
git checkout develop
git checkout -b feature/payment-system

# Develop
git commit -m "feat: add payment form"
git push -u origin feature/payment-system

# Merge to develop (via PR)
gh pr create --base develop

# Start release
git checkout develop
git checkout -b release/1.0.0

# Finalize release
git checkout main
git merge release/1.0.0
git tag v1.0.0
git checkout develop
git merge release/1.0.0

# Hotfix
git checkout main
git checkout -b hotfix/security-patch
# ... fix ...
git checkout main
git merge hotfix/security-patch
git tag v1.0.1
git checkout develop
git merge hotfix/security-patch
```

### When to Use

- Scheduled release cycles
- Multiple versions in production
- Larger teams
- QA/staging environments

## Branch Naming Conventions

### Format

```
<type>/<ticket>-<description>
```

### Examples

```
feature/AUTH-123-oauth-login
fix/BUG-456-cart-calculation
hotfix/SEC-789-xss-vulnerability
release/1.2.0
docs/update-api-reference
```

### Guidelines

- Use lowercase
- Use hyphens (not underscores)
- Include ticket number if applicable
- Keep description short but clear

## Environment Branches

### Setup

```
main      → Production
staging   → Staging environment
develop   → Development environment
```

### Promotion Flow

```
feature/* → develop → staging → main
                ↓         ↓       ↓
              Dev      Stage    Prod
```

### Automation

```yaml
# Deploy on merge to specific branches
on:
  push:
    branches:
      - main      # Deploy to production
      - staging   # Deploy to staging
      - develop   # Deploy to development
```

## Merge Strategies

### Squash Merge

```bash
gh pr merge --squash
```

- Combines all commits into one
- Clean history
- Best for feature branches

### Merge Commit

```bash
gh pr merge --merge
```

- Preserves all commits
- Creates merge commit
- Best for release branches

### Rebase

```bash
gh pr merge --rebase
```

- Linear history
- Rewrites commits
- Best for small changes

## Protected Branches

### Recommended Settings

```yaml
# main branch
- Require PR reviews: 1-2 reviewers
- Require status checks: CI must pass
- Require up-to-date branch
- No force pushes
- No deletions

# develop branch
- Require PR reviews: 1 reviewer
- Require status checks: CI must pass
```

## Migration Guide

### From Git Flow to Trunk-Based

1. Implement feature flags
2. Increase CI/CD coverage
3. Shorten branch lifetimes gradually
4. Remove `develop` branch
5. Merge directly to `main`

### From No Strategy to GitHub Flow

1. Protect `main` branch
2. Require PRs for all changes
3. Set up CI checks
4. Train team on workflow
5. Establish naming conventions

## Decision Checklist

Choose **Trunk-Based** if:
- [ ] Deploy multiple times per day
- [ ] Have strong CI/CD
- [ ] Can use feature flags
- [ ] Team is experienced

Choose **GitHub Flow** if:
- [ ] Deploy daily to weekly
- [ ] Want simple workflow
- [ ] Don't need versioned releases
- [ ] Small to medium team

Choose **Git Flow** if:
- [ ] Have scheduled releases
- [ ] Need multiple versions
- [ ] Have QA process
- [ ] Larger team with roles

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.