Skip to content

5. ブランチを準備する ​

概要 ​

main から develop を作り、develop から feature ブランチを作ります。

ブランチを作ると、未完成の変更を安定したコードから分離できます。複数の作業を並行して進められるほか、Pull Request で差分をレビューし、CI が成功した変更だけを共有ブランチへ取り込めます。

このハンズオンでは、feature ブランチを develop へマージして変更を統合し、動作を確認してから develop を main へマージしてリリースします。

補足: Git Flow とは

Git Flow は、リリース済みのコードを管理する main、次のリリースに向けて変更を統合する develop、個別機能を実装する feature を中心に、release と hotfix を使い分けるブランチモデルです。定期的にバージョンをまとめてリリースする製品では、開発中、リリース準備中、公開済みのコードを分離できます。

完全な Git Flow では、feature を develop へ統合し、リリース前に release ブランチで最終調整します。緊急修正は main から hotfix を作り、修正後に main と develop の両方へ反映します。このハンズオンでは流れを理解しやすくするため、release と hotfix を省略し、feature → develop → main の部分を体験します。

Git Flow はすべての開発に必要なわけではありません。継続的に小さな変更をデプロイするチームでは、main から短期間のブランチを作る GitHub Flow など、より単純なモデルが適する場合があります。リリース頻度、並行開発の数、承認手順に合わせて選択します。

参考資料:

手順 ​

1. develop を作成する ​

最新の main から develop を作成してリモートへ push し、変更の統合先として利用できる状態にします。

Agent モードで以下の指示を与えます。

text
既存の AGENTS.md と git-workflow Skill のガードレールに従ってください。
作業ツリー、現在のブランチ、origin/main との同期状態を確認し、main を fast-forward で最新化してから main を起点に develop を作成する計画を示してください。
develop の作成と origin への初回 push について対象と影響を要約し、askQuestions で明示的な承認を得てから実行してください。未コミット変更、既存 develop、起点や remote の不整合があれば変更せず質問してください。
実行後にローカルとリモートの develop を確認してください。

次を確認します。

  • main が fast-forward で最新化され、main を起点に develop が作成されている
  • 作成と初回 push の対象と影響を確認して明示的に承認するまで実行されていない
  • ローカルとリモートの develop が報告されている
  • 未コミット変更や起点の不整合がある場合は変更されていない

2. feature ブランチを作成する ​

作成した未完了 Issue の番号を取得し、ブランチ名を組み立てます。

Agent モードで以下の指示を与えます。

text
現在の GitHub リポジトリで、未完了かつタイトルが「残席が少ないイベントを分かりやすくする」と一致する Issue を読み取り専用で検索してください。
一致する1件の Issue 番号を取得し、後続で使う feature/<Issue番号>-low-availability というブランチ名を示してください。0件または複数件なら推測せず質問し、ブランチはまだ作成しないでください。

次を確認します。

  • 未完了でタイトルが一致する Issue が1件だけ特定されている
  • ブランチ名が feature/<Issue番号>-low-availability として示されている
  • Issue が0件または複数件の場合は推測されていない
  • ブランチはまだ作成されていない

取得した Issue 番号を使って develop から feature ブランチを作成し、実装を開始できる状態にします。

Agent モードで以下の指示を与えます。

text
既存の AGENTS.md と git-workflow Skill のガードレールに従ってください。
現在のブランチが develop、作業ツリーが clean、Issue 番号とブランチ名が確定済みであることを確認し、develop を起点に feature/<Issue番号>-low-availability を作成して切り替えてください。
同名ブランチ、起点不整合、対象不明があれば変更せず質問してください。push、コミット、ファイル変更は行わず、実行後に現在のブランチと起点コミットを報告してください。

次を確認します。

  • 作成前のブランチが develop で、作業ツリーが clean である
  • develop を起点に feature/<Issue番号>-low-availability が作成されている
  • 現在のブランチと起点コミットが報告されている
  • push、コミット、ファイル変更が行われていない

確認事項 ​

  • 現在のブランチが feature/<Issue番号>-low-availability である
  • feature ブランチが develop を起点としている

まとめ ​

main から変更を統合する develop ブランチを作り、さらに develop から実装作業用の feature ブランチを作成しました。未完成の変更を共有ブランチから分離することで、実装途中のコードがリリース対象へ混入することを防げます。

feature ブランチ名には Issue 番号を含めました。これにより、ブランチ、コミット、Pull Request、Issue の関係をたどりやすくなり、何のための変更なのかをチームで共有できます。また、ブランチの起点を develop にそろえることで、次に統合するコードとの差分を正しく確認できます。

補足: 実務で役立つブランチ運用
  • ブランチを作る前に起点となるブランチを更新し、古いコードから作業を始めないようにします。
  • 1つのブランチでは1つの目的だけを扱い、レビューできる大きさに保ちます。
  • feature/<Issue番号>-<変更内容> のような命名規則を決めると、一覧から目的を判断しやすくなります。
  • 長期間使うブランチでは、統合先の更新を定期的に取り込み、競合を早い段階で見つけます。取り込み方法はチームのルールに従います。
  • マージ済みの feature ブランチは削除し、完了した作業と進行中の作業を区別します。
  • main や develop への直接 push を制限し、Pull Request、レビュー、CI を経由するルールを設定すると、安全性を高められます。

次は、この feature ブランチ上でコードとテストを変更し、Issue に記載した完了条件を実装します。