Skip to content

Git ブランチメンテナンス手册 ​

本手册は YaoXiang プロジェクトの Git ブランチ管理戦略を定義し、コードベースの秩序ある開発と効率的なコラボレーションを確保することを目的としています。


📋 目次 ​


🏷️ ブランチタイプ規範 ​

コアブランチ(Core Branches) ​

ブランチ名用途ライフサイクル保護レベル
main本番環境コード永続厳格保護
devメイン開発ブランチ永続中程度保護
masterメインブランチ(互換)永続厳格保護

機能ブランチ(Feature Branches) ​

接頭辞用途命名例マージ先
feature/新機能開発feature/type-inference
feature/ownership-model
dev
bugfix/既知の欠陥を修正bugfix/memory-leak
bugfix/parser-error
dev
hotfix/緊急の本番問題修正hotfix/security-patch
hotfix/crash-bug
main + dev
release/リリース準備ブランチrelease/v0.8.0
release/v1.0.0
main

補助ブランチ(Auxiliary Branches) ​

接頭辞用途命名例マージ先
docs/ドキュメント更新docs/api-reference
docs/tutorial-update
dev
ci/CI/CD 設定変更ci/add-deploy-script
ci/optimize-build
dev
refactor/コードリファクタリングrefactor/lexer-optimization
refactor/memory-manager
dev
test/テスト関連変更test/add-integration
test/performance-bench
dev

📝 命名規則 ​

基本命名フォーマット ​

bash
# 機能ブランチ
<type>/<short-description>

# 例
feature/add-type-inference
bugfix/fix-parser-crash
hotfix/security-vulnerability

命名規範 ​

  1. 小文字を使用:すべてのブランチ名は小文字を使用
  2. ハイフンで区切る:単語の区切りには - を使用し、アンダースコアは使用しない
  3. 説明的な命名:ブランチ名はその目的を明確に表現すること
  4. 特殊文字を避ける:スペース、ピリオド、その他の特殊文字を使用しない
  5. 長さ制限:ブランチ名は50文字を超えないこと

詳細な例 ​

bash
# ✅ 良い命名
feature/user-authentication-system
bugfix/fix-compilation-error-on-windows
hotfix/memory-leak-in-vm
docs/update-api-documentation
refactor/optimize-lexer-performance
test/add-e2e-test-cases

# ❌ 悪い命名
Feature/NewFeature  # 大文字を使用
bug_fix            # アンダースコアを使用
hotfix/fix        # 説明が不明確
feature/ADD_NEW_FEATURE_WITH_LOTS_OF_DETAILS_THAT_IS_TOO_LONG  # 長すぎる

🔄 ブランチライフサイクル ​

ブランチの作成 ​

bash
# 1. 最新の dev ブランチから作成
git checkout dev
git pull origin dev
git checkout -b feature/your-feature-name

# 2. リモートブランチをプッシュ
git push -u origin feature/your-feature-name

ブランチ開発 ​

bash
# 定期的に最新コードを同期
git checkout dev
git pull origin dev
git checkout feature/your-feature-name
git rebase dev  # または git merge dev

# コードをコミット
git add .
git commit -m ":sparkles: feat(frontend): タイプ推論機能を追加"
git push origin feature/your-feature-name

ブランチのマージ ​

bash
# 1. Pull Request を作成
# 2. コードレビューが通った後
git checkout dev
git pull origin dev
git merge --no-ff feature/your-feature-name
git push origin dev

# 3. ブランチをクリーンアップ
git branch -d feature/your-feature-name  # ローカル削除
git push origin --delete feature/your-feature-name  # リモート削除

ブランチの削除 ​

bash
# マージ済みの機能ブランチを削除
git branch -d feature/completed-feature
git push origin --delete feature/completed-feature

# マージ済みブランチの一括クリーンアップ
git branch --merged dev | grep feature | xargs -n 1 git branch -d

🚀 ワークフロー ​

機能開発フロー ​

mermaid
graph TD
    A[dev ブランチ] --> B[feature ブランチを作成]
    B --> C[機能を開発]
    C --> D[コードをコミット]
    D --> E[PR を dev に作成]
    E --> F[コードレビュー]
    F -->|通過| G[dev にマージ]
    F -->|却下| C
    G --> H[feature ブランチを削除]
    G --> I[CI/CD がトリガー]

緊急修正フロー ​

mermaid
graph TD
    A[main ブランチ] --> B[hotfix ブランチを作成]
    B --> C[問題を修正]
    C --> D[コードをコミット]
    D --> E[PR を main + dev に作成]
    E --> F[クイックレビュー]
    F --> G[main と dev に同時にマージ]
    G --> H[hotfix をリリース]
    I[hotfix ブランチを削除]

リリースフロー ​

mermaid
graph TD
    A[dev ブランチ] --> B[release ブランチを作成]
    B --> C[バージョン準備]
    C --> D[テスト検証]
    D --> E[PR を main に作成]
    E --> F[最終レビュー]
    F --> G[main にマージ]
    G --> H[バージョンチームを作成]
    H --> I[dev にマージバック]
    J[release ブランチをクリーンアップ]

🛡️ ブランチ保護策略 ​

主要ブランチの保護 ​

main ブランチ

  • 直接プッシュを禁止
  • PR によるマージが必須
  • 強制プッシュを禁止
  • コードレビューを要求
  • ステータスチェックが通過必須

dev ブランチ

  • 直接プッシュを禁止(開発メンバー)
  • PR マージを要求
  • ステータスチェックが通過必須
  • 管理者の直接プッシュを許可

ブランチ権限設定 ​

ブランチタイプ開発者メンテナー管理者
mainPR のみPR のみPR を承認
devPR マージPR マージ直接プッシュ可
feature/*全権限全権限全権限
hotfix/*全権限全権限全権限

✅ ベストプラクティス ​

1. ブランチ管理 ​

  • 頻繁に同期:定期的に dev ブランチから最新コードを取得
  • アトミックコミット:各コミットは関連する変更のみを含める
  • タイムリーなクリーンアップ:マージ後は速やかに完了した機能ブランチを削除
  • 明確な説明:ブランチ名とコミットメッセージは意図を明確に表現

2. コミット規範 ​

コミット規範に従う:

bash
# フォーマット
:絵文字: type(scope): テーマ(日本語)

# 例
:sparkles: feat(frontend): タイプ推論機能を追加
:bug: fix(parser): パーサークラッシュの問題を修正
:recycle: refactor(vm): 仮想マシンのメモリ管理をリファクタリング

3. Pull Request ​

  • 明確な説明:変更内容と理由を詳細に説明
  • 이슈 の関連付け:Closes #123 を使用して関連する Issue を関連付け
  • タイムリーな対応:レビューの意見には速やかに返信
  • 十分なテスト:すべてのテストが通ることを確認

4. コードレビュー ​

  • 機能の正しさ:コードの機能が正しいか確認
  • コード品質:コードが規範是否符合するかチェック
  • テストカバレッジ:適切なテストがあるか確認
  • ドキュメント更新:ドキュメントの更新が必要か確認

❓ よくある質問 ​

Q1: ブランチタイプはどのように選択すればよいですか? ​

回答:

  • 新機能 → feature/
  • 既知の欠陥修正 → bugfix/
  • 緊急の本番修正 → hotfix/
  • ドキュメント更新 → docs/
  • コードリファクタリング → refactor/
  • テスト関連 → test/

Q2: feature ブランチはどのブランチから作成すべきですか? ​

回答: 常に dev ブランチから作成し、 最新の開発コードに基づいて機能を確保します:

bash
git checkout dev
git pull origin dev
git checkout -b feature/new-feature

Q3: release ブランチはいつ作成しますか? ​

回答:

  • 新しいバージョンのリリースを準備する時
  • 新機能の追加を凍結する必要がある時
  • 安定バージョンを专门的にテストする必要がある時

Q4: ブランチの競合はどのように処理しますか? ​

回答:

  1. 対象ブランチを更新:git checkout dev && git pull origin dev
  2. 機能ブランチに切り替え:git checkout feature/your-branch
  3. マージして競合を解決:git rebase dev または git merge dev
  4. 競合解決後に開発を続ける

Q5: hotfix ブランチはどのように処理しますか? ​

回答:

  1. main ブランチから作成:git checkout main && git checkout -b hotfix/urgent-fix
  2. 問題を修正してテスト
  3. main と dev に同時に PR を作成
  4. マージ後に即座にデプロイ

Q6: ブランチの命名長さに制限はありますか? ​

回答: 50文字を超えないことを推奨し、簡潔で明了に保ちます。Git 自体はより長い名前をサポートしていますが、 長すぎる名前は可読性に影響します。


📚 関連ドキュメント ​


🔧 ツールとスクリプト ​

マージ済みブランチの一括クリーンアップ ​

bash
# dev にマージ済みのローカルブランチを削除
git checkout dev
git pull origin dev
git branch --merged dev | grep -E "^(feature|bugfix|docs|refactor|test)/" | xargs -n 1 git branch -d

# マージ済みのリモートブランチを削除
git remote prune origin

ブランチ作成テンプレート ​

bash
#!/bin/bash
# 機能ブランチ作成のヘルパースクリプト

BRANCH_TYPE=$1
BRANCH_NAME=$2

if [ -z "$BRANCH_TYPE" ] || [ -z "$BRANCH_NAME" ]; then
    echo "使用方法: $0 <タイプ> <ブランチ名>"
    echo "タイプ: feature, bugfix, hotfix, docs, refactor, test"
    exit 1
fi

git checkout dev
git pull origin dev
git checkout -b "$BRANCH_TYPE/$BRANCH_NAME"
git push -u origin "$BRANCH_TYPE/$BRANCH_NAME"

echo "ブランチを作成してプッシュしました: $BRANCH_TYPE/$BRANCH_NAME"

💡 ヒント:ブランチの原子性と集中性を保ち、 各ブランチは1つのことだけを行い、 これによりコード管理をより明確で効率的にできます!

📞 サポート:質問がある場合は、 GitHub Discussions で議論してください。