# Git Flow

> Standard Git Flow branching model and lifecycle management strategy. Trigger: "create release", "hotfix", "branching strategy", "git flow".

- Skill: `odjaramillo/git-flow` (Agent Skill)
- Install (CLI): `npx skillmds@latest add odjaramillo/git-flow`
- Raw SKILL.md: https://api.skillmd.com/api/skills/odjaramillo/git-flow/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- License: Apache-2.0
- Author: odjaramillo (https://skillmd.com/u/odjaramillo)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/odjaramillo/git-flow

---


# Git Flow Strategy

## When to Use

- Deciding which branch to base work on.
- Creating a new Release or Hotfix.
- Merging strategies (Squash vs Merge Commit).

## 1. Branching Model

| Branch      | Source    | Merge Into        | Lifespan   | Purpose                                           |
| ----------- | --------- | ----------------- | ---------- | ------------------------------------------------- |
| `main`      | -         | -                 | Infinite   | Production-ready code. Stable.                    |
| `develop`   | `main`    | `main`            | Infinite   | Integration branch for next release.              |
| `feature/*` | `develop` | `develop`         | Short      | New features (e.g., `feature/login-page`).        |
| `release/*` | `develop` | `develop`, `main` | Medium     | Release prep (e.g., `release/v1.0.0`).            |
| `hotfix/*`  | `main`    | `develop`, `main` | Very Short | Production critical fixes (e.g., `hotfix/crash`). |

## 2. Feature Development

1.  **Start:** Update `develop` and branch off.
    ```bash
    git checkout develop && git pull origin develop
    git checkout -b feature/my-feature
    ```
2.  **Work:** Commit changes. Use `github` skill templates for PRs.
3.  **Finish:** PR into `develop`. Squash merge recommended.

## 3. Release Process

1.  **Start:** Branch off `develop` when features are frozen.
    ```bash
    git checkout develop
    git checkout -b release/v1.2.0
    ```
2.  **Work:** Bump versions, update changelogs, fix bugs. NO NEW FEATURES.
3.  **Finish:**
    - Merge into `main` (Tag this commit).
    - Merge into `develop` (Back-propagate fixes).
    - Delete `release/v1.2.0` branch.

## 4. Hotfixes

1.  **Start:** Branch off `main` (Production).
    ```bash
    git checkout main
    git checkout -b hotfix/critical-bug
    ```
2.  **Work:** Fix the critical bug. Minimal changes.
3.  **Finish:**
    - Merge into `main` (Tag this commit).
    - Merge into `develop`.
    - Delete `hotfix` branch.

## 5. Protocols

- **Never commit directly to `main` or `develop`.**
- **Keep history clean.** Use interactive rebase before PRs.
- **Tags are immutable.** Once pushed, do not change.

