gitflow

v2026.09.24

Branching, merging, versioning, and release conventions for the Gitflow workflow, covering main/develop branches, feature/release/hotfix branches, semantic versioning, and pull request rules. Use when creating a branch, naming a branch, planning a release or hotfix, writing a commit message, or setting up branch protection for a repository that follows Gitflow.

GitHub
安装命令
npx skhub add mindrally/gitflow
Markdown
SKILL.md

Gitflow

This skill covers the Gitflow branching model: the two long-lived branches, the three supporting branch types, commit message conventions, semantic versioning, and the release and hotfix processes.

Workflow for a Feature Change

  1. Sync develop — Run git checkout develop && git pull origin develop so the feature branches from the latest development state.
  2. Create the feature branch — Run git checkout -b feature/123-user-authentication, using the naming convention feature/[issue-id]-descriptive-name.
  3. Commit with conventional messages — Use type(scope): description for every commit (see Commit Messages below).
  4. Rebase or merge develop in — Before opening a PR, bring the branch up to date: git fetch origin && git rebase origin/develop (or merge, per team convention).
  5. Open a pull request into develop — Require at least one approval and passing CI checks; never commit directly to develop.
  6. Merge and clean up — After merge, delete the feature branch both locally and on the remote: git branch -d feature/123-user-authentication && git push origin --delete feature/123-user-authentication.

Main Branches

main (or master)

  • Contains production-ready code only.
  • Never commit directly to main.
  • Only accepts merges from hotfix/* branches or release/* branches.
  • Must be tagged with a version number after every merge (e.g. git tag -a v1.2.0 -m "Release 1.2.0").

develop

  • The main integration branch; contains the latest delivered development changes.
  • Source branch for all feature/* branches.
  • Never commit directly to develop — all changes land through pull requests.

Supporting Branches

feature/*

  • Branch from: develop.
  • Merge back into: develop.
  • Naming convention: feature/[issue-id]-descriptive-name (e.g. feature/123-user-authentication).
  • Must be up to date with develop before opening a PR.
  • Delete after merge.

release/*

  • Branch from: develop.
  • Merge back into: main and develop.
  • Naming convention: release/vX.Y.Z (e.g. release/v1.2.0).
  • Scope is limited to bug fixes, documentation, and release-oriented tasks — no new features.
  • Delete after merge.

hotfix/*

  • Branch from: main.
  • Merge back into: main and develop.
  • Naming convention: hotfix/vX.Y.Z (e.g. hotfix/v1.2.1).
  • Reserved for urgent production fixes only.
  • Delete after merge.

Commit Messages

Use Conventional Commits format: type(scope): description.

TypeMeaning
featNew feature
fixBug fix
docsDocumentation changes
styleFormatting, missing semicolons, etc. — no logic change
refactorCode restructuring without behavior change
testAdding or correcting tests
choreMaintenance tasks (build scripts, dependency bumps)

Example:

feat(auth): add refresh-token rotation

fix(orders): prevent duplicate charge on retry

chore(deps): bump lodash to 4.17.21

Semantic Versioning

Given a version MAJOR.MINOR.PATCH:

  • MAJOR — incremented for incompatible/breaking API changes.
  • MINOR — incremented for backwards-compatible new functionality.
  • PATCH — incremented for backwards-compatible bug fixes.

Pull Request Rules

  1. All changes must go through pull requests — no exceptions for main or develop.
  2. Minimum of one required approval before merge.
  3. All CI checks must pass.
  4. No direct commits to protected branches (main, develop).
  5. The branch must be up to date with its target before merging.
  6. Delete the branch after merge (both local and remote copies).

Branch Protection Rules

Apply to both main and develop:

  • Require pull request reviews before merging.
  • Require status checks to pass before merging.
  • Require branches to be up to date before merging.
  • Include administrators in the restrictions (no bypassing rules with elevated permissions).
  • No force pushes.
  • No branch deletions.

Release Process

  1. Create a release branch from develop: git checkout -b release/v1.2.0 develop.
  2. Bump version numbers in package manifests / changelogs.
  3. Fix any release-specific issues (docs, last-minute bugs) — do not add new features.
  4. Open a PR from the release branch into main.
  5. After merge to main:
    • Tag the release: git tag -a v1.2.0 -m "Release 1.2.0" and push the tag.
    • Merge main back into develop so develop has the release commit and tag.
    • Delete the release branch.

Hotfix Process

  1. Create a hotfix branch from main: git checkout -b hotfix/v1.2.1 main.
  2. Fix the production issue with the smallest possible change.
  3. Bump the patch version.
  4. Open a PR from the hotfix branch into main.
  5. After merge to main:
    • Tag the release: git tag -a v1.2.1 -m "Hotfix 1.2.1" and push the tag.
    • Merge main back into develop so the fix isn't lost in the next release.
    • Delete the hotfix branch.
发现
标签

此技能尚未发布标签。

版本
最新版本元数据

版本

v2026.09.24

发布时间

Sep 24, 2026

分类

未分类

许可证

Apache-2.0

源路径

gitflow

默认分支

main

最新提交

9718410

Tree SHA

81ba3c7