🌿

Gitブランチ戦略:個人開発で実践するワークフロー

に公開
2

この記事は、ひとりで作るSaaS - 設計・実装・運用の記録 Advent Calendar 2025 の5日目の記事です。

昨日の記事では「個人開発のドキュメント戦略」について書きました。今日は、個人開発におけるGitブランチ戦略について書きます。

🎯 個人開発のGit運用で考えるべきこと

チーム開発では、Git-flowやGitHub Flowなど確立されたブランチ戦略があります。しかし、個人開発では状況が異なります。

個人開発の特徴:

  • 開発者は自分一人(コンフリクトが起きにくい)
  • レビュアーがいない(セルフレビューが基本)
  • 素早く改善サイクルを回したい(手続きは最小限にしたい)

一方で、以下の課題もあります。

  • 本番環境を壊したくない
  • 変更履歴を追いやすくしたい
  • AIエージェント(Claude Code)と協働する際のルールが必要

これらを踏まえて、私が個人開発しているMemoreruでは以下のブランチ戦略を採用しています。

📂 Git Worktreeで並列開発

Git Worktreeを使うと、複数のディレクトリでそれぞれ別のブランチを同時に開けます。通常のブランチ切り替えと違い、ローカルに物理的なフォルダが分かれるため、それぞれの場所で別々のClaude Codeセッションを起動できます。

なぜGit Worktreeか

一番の理由は、Claude Codeで並列開発ができるからです。

たとえば「検索機能のリファクタリング」と「決済機能の実装」という2つの大きなタスクがあるとします。それぞれ別のWorktreeを作成し、別々のClaude Codeセッションで進めます。

~/my-project/           # develop ブランチ(メインの作業場所)
~/my-project-search/    # feature/search-refactor(検索機能)
~/my-project-payment/   # feature/payment(決済機能)

ポイントは、セッションごとに会話の文脈が分かれることです。

検索機能のセッションでは検索に関する議論が蓄積され、決済機能のセッションでは決済に関する議論が蓄積されます。文脈が混ざらないので、それぞれのタスクに集中した会話ができます。

セッション1(検索機能): 「このクエリの最適化について...」
セッション2(決済機能): 「Stripeのwebhook処理について...」
→ 互いに干渉せず、それぞれの文脈で深い議論ができる

個人開発でも、AIエージェントを活用すれば「擬似的なチーム開発」が可能になります。Git Worktreeはその基盤として非常に有効です。

その他のメリット:

  • ブランチ切り替えのたびにサーバー再起動が不要
  • stash → checkout → pop の手間がない
  • 「今どのブランチにいるか」を常に意識する必要がない

セットアップ方法

並列作業が必要になったときに、featureブランチ用のWorktreeを追加します。

# メインのリポジトリ(develop)
cd ~/my-project
git branch  # developにいることを確認

# featureブランチを作成してWorktreeを追加
git worktree add ../my-project-feature1 -b feature/ui-refactor

これで~/my-project-feature1ディレクトリが作成され、feature/ui-refactorブランチがチェックアウトされます。

作業完了後のクリーンアップ

featureブランチをdevelopにマージしたら、Worktreeを削除します。

# Worktreeを削除
git worktree remove ../my-project-feature1

# ブランチも削除(マージ済みなら)
git branch -d feature/ui-refactor

🔄 ブランチ運用ルール

基本の流れ

feature → develop → main(本番)→ Vercel自動デプロイ
  1. 日常の開発: my-project(develop)で作業
  2. 並列作業: featureブランチをWorktreeで作成し、Claude Codeで並列開発
  3. マージ: feature → develop へPR、または直接マージ
  4. 本番デプロイ: develop → main へPR → Vercelが自動デプロイ

コミットルール

# ✅ 機能単位でコミット
git commit -m "feat: ユーザープロフィール編集機能を追加"
git commit -m "fix: ログイン時のエラーハンドリングを修正"

# ❌ 複数機能を一括コミット
git commit -m "いろいろ修正"

ポイント:

  • 機能単位でコミット(複数機能の一括変更禁止)
  • プレフィックスを使用(feat, fix, docs, refactor等)
  • 動作確認してからコミット

やってはいけないこと

# ❌ mainへの直接push
git push origin main  # 禁止!

# ✅ 必ずdevelop → PR → mainの流れ
git push origin develop
# → GitHub上でPRを作成

mainへの直接pushは、本番環境を壊すリスクがあるため禁止しています。

🤖 AIエージェントとの協働ルール

Claude Codeで開発する際は、以下のルールをCLAUDE.mdに明記しています。

## Git運用

### ブランチ戦略(Git Worktree)
- **日常の開発**: `~/my-project` (develop) で作業
- **並列作業**: featureブランチをWorktreeで作成
- **本番デプロイ**: GitHub上でPR作成 → merge → Vercel自動デプロイ

### コミット・プッシュルール
- **機能単位コミット**: 複数機能の一括変更禁止
- **mainへの直接push厳禁**: 必ずdevelop → PR → mainの流れ
- **動作確認必須**: コミット前に画面で動作確認
- **ユーザー確認後のコミット実行**: 勝手にコミットしない

特に重要なのは「勝手にコミットしない」というルールです。AIが良かれと思って自動コミットすると、意図しない変更が入る可能性があります。コミットは必ず人間が確認してから実行します。

📋 Vercelとの連携

Vercelは、GitHubリポジトリと連携して自動デプロイを行います。

ブランチとデプロイ環境の対応

ブランチ デプロイ先 URL
main Production example.com
develop Preview develop-xxx.vercel.app

PRを作成すると、Preview環境に自動デプロイされます。本番反映前に確認できるので便利です。

ドキュメント更新時のスキップ

ドキュメントだけの更新でデプロイを走らせたくない場合は、コミットメッセージに[skip ci]を含めます。

git commit -m "docs: READMEを更新 [skip ci]"

💡 実践Tips

Tip 1: プルリクエストのテンプレート

.github/pull_request_template.mdを用意しておくと、PRの品質が安定します。

## 概要
<!-- 何を変更したか -->

## 変更内容
-

## テスト確認
- [ ] ローカルで動作確認済み
- [ ] Preview環境で確認済み

## 備考

Tip 2: ブランチ保護ルール

GitHub上でmainブランチを保護すると、直接pushを防げます。

Settings → Branches → Branch protection rules:

  • Require a pull request before merging
  • Require status checks to pass before merging

個人開発でも設定しておくと、うっかりミスを防げます。

Tip 3: Worktreeの一覧確認

現在のWorktreeを確認するには以下のコマンドを使います。

git worktree list
# ~/my-project           abcd123 [develop]
# ~/my-project-feature1  efgh456 [feature/ui-refactor]

不要になったWorktreeはgit worktree removeで削除しましょう。

✅ まとめ

Memoreruでの実践から得た学びをまとめます。

うまくいっていること:

  • Git Worktreeでfeatureブランチを並列管理し、Claude Codeで擬似チーム開発
  • develop → PR → mainの流れで本番を保護
  • CLAUDE.mdでAIエージェントにルールを伝達

注意が必要なこと:

  • 個人開発でも油断すると本番を壊す
  • AIに任せきりにせず、コミットは人間が確認
  • 使い終わったWorktreeは忘れずに削除

個人開発だからといってGit運用を適当にすると、後で困ることになります。最低限のルールを決めておくことをおすすめします。

明日は「Supabaseでスキーマ設計:テーブル分割と正規化の実践」について解説します。


シリーズの他の記事

  • 12/4: 個人開発のドキュメント戦略:設計書・思考ログの使い分け
  • 12/6: Supabaseでスキーマ設計:テーブル分割と正規化の実践
GitHubで編集を提案

Discussion

KvraKvra

“個人開発だからといってGit運用を適当にすると、後で困ることになります。”の所、耳が痛いです😅ついつい、誰にも迷惑かけないしと適当にしがちなので気をつけます。

くまさんのAI開発日記くまさんのAI開発日記

コメントありがとうございます!とても嬉しいです。自分もあまり偉そうなことは言えないのですが、なるべく事故が起こらないような対策などはしておきたいですね。