Practical Guide

コマンドで学ぶ
実践ワークフロー

実際の開発シナリオに沿って、Git Flow の各ステップを 具体的なコマンドとともに解説します。

// 01 Feature Development

新機能の開発

1

feature ブランチを作成

develop ブランチから新しい feature ブランチを切ります。ブランチ名は機能を端的に表す名前にします。

terminal
# develop ブランチを最新に
git checkout develop
git pull origin develop

# feature ブランチを作成
git checkout -b feature/user-auth develop
2

機能を実装 & コミット

通常どおり開発を進め、こまめにコミットします。コミットメッセージは明確に。

terminal
# 変更をステージング & コミット
git add src/auth/
git commit -m "feat: ログイン認証機能を実装"

# リモートにプッシュ (バックアップ & レビュー用)
git push -u origin feature/user-auth
3

develop にマージ

機能が完成したら、develop にマージして feature ブランチを削除します。--no-ff でマージコミットを残すのが Git Flow の流儀です。

terminal
git checkout develop
git merge --no-ff feature/user-auth -m "feat: ユーザー認証機能を統合"
git push origin develop

# feature ブランチを削除
git branch -d feature/user-auth
git push origin --delete feature/user-auth
// 02 Release

リリース準備

4

release ブランチを作成

リリースに含める機能が develop に揃ったら、release ブランチを作成します。この時点で develop は次期リリースの開発を再開できます。

terminal
git checkout -b release/1.0.0 develop

# バージョン番号を更新
git commit -am "chore: bump version to 1.0.0"
5

QA & バグ修正

release ブランチ上でテストを行い、見つかったバグはここで修正します。新機能の追加は禁止。バグ修正・ドキュメント・バージョン番号の調整のみ。

terminal
# リリース用のバグ修正
git commit -am "fix: バリデーションエラーのメッセージを修正"
6

main と develop にマージ

リリース準備が完了したら、main と develop の両方にマージし、main にバージョンタグを付けます。

terminal
# main にマージ & タグ付け
git checkout main
git merge --no-ff release/1.0.0 -m "release: v1.0.0"
git tag -a v1.0.0 -m "Version 1.0.0"

# develop にもマージ (リリース中の修正を反映)
git checkout develop
git merge --no-ff release/1.0.0 -m "chore: merge release/1.0.0 back to develop"

# リモートにプッシュ
git push origin main develop --tags

# release ブランチを削除
git branch -d release/1.0.0
git push origin --delete release/1.0.0
// 03 Hotfix

緊急バグ修正

7

hotfix ブランチを作成

本番環境で緊急のバグが見つかった場合、main から直接 hotfix ブランチを切ります。

terminal
git checkout -b hotfix/fix-login-crash main

# バグを修正
git commit -am "fix: ログインクラッシュを修正"
8

main と develop にマージ

修正を main と develop の両方に反映し、パッチバージョンのタグを付けます。

terminal
# main にマージ & タグ
git checkout main
git merge --no-ff hotfix/fix-login-crash -m "hotfix: v1.0.1"
git tag -a v1.0.1 -m "Hotfix: ログインクラッシュ修正"

# develop にもマージ
git checkout develop
git merge --no-ff hotfix/fix-login-crash -m "hotfix: merge login crash fix"

# プッシュ & クリーンアップ
git push origin main develop --tags
git branch -d hotfix/fix-login-crash
git push origin --delete hotfix/fix-login-crash
// Bonus: git-flow CLI

git-flow コマンドで簡略化

git-flow extension

git-flow 拡張を使えば、上記のワークフローをシンプルなコマンドで実行できます。

初期化
git flow init
feature
git flow feature start user-auth
git flow feature finish user-auth
release
git flow release start 1.0.0
git flow release finish 1.0.0
hotfix
git flow hotfix start fix-crash
git flow hotfix finish fix-crash

Quick Reference

🟠
main
本番環境の真実
🔵
develop
開発の統合地点
🟢
feature
新しい機能
🟣
release
出荷の準備
🔴
hotfix
緊急修正