GitHubリポジトリの運用方針

GitHubフローをアレンジしたもの。ここではWebアプリを想定しているが、他のシステム形態にも適用できるかも。

ブランチ戦略

  • main
    • defaultブランチ。基本的にリリースタグはここから打つ。
    • ブランチ保護対象。
    • Settings -> Branches -> Add branch protection ruleから設定。 a
  • release/xxx
    • ブランチ保護対象。
    • 特定のコミットをリリースに反映したいときに作成。リリースタグをここから打つ。
    • 特定のコミットは他のブランチからcherry pick。
  • feature/xxx
    • 作業用。
    • 基本的にPRはここから作成。mainブランチにSquash and merge
  • hotfix/xxx
    • すぐに本番環境に反映したい機能修正。
  • topic/xxx
    • 大規模な機能追加をするときに作成。
    • 小さな単位毎にfeatureブランチを作成。featureブランチからtopicブランチにPRを出してSquash and merge
    • いざリリースする際はmainブランチにCreate a merge commit(理由は後述)。

PRマージはSquash and mergeをデフォルトにする

  • Settings -> General -> Pull Requestsから設定。 b
  • コミット単位やコミットメッセージに気を使う必要がなくなる。
    • 注意点とかはソースコード中にコメントとして残しておきたい派。
  • ただし、topicブランチをmainブランチにマージする際はCreate a merge commitにする。
    • Squash and mergeのままだと、分散させたfeatureブランチごとのマージメッセージがひとまとめにされちゃう。

PRマージメッセージはPRタイトルをデフォルトにする

  • Settings -> General -> Pull Requestsから設定。
  • 細かくなりがちなコミットメッセージは適当でよいが、PRタイトルは丁寧にする。
  • 外部のIssue管理ツールを使用している場合は自動リンク設定をしてPRタイトルにIssue番号を付与すると尚良し。
    • ただし、有料プラン限定。