Scott Chacon がPro Gitで説明しているワークフローが役立つ場合があります。このワークフローには、常に存在する 2 つのブランチ、masterとdevelop があります。
masterはプロジェクトの最も安定したバージョンを表し、このブランチからのみ本番環境にデプロイします。
developには進行中の変更が含まれており、必ずしも実稼働の準備が整っているとは限りません。
開発ブランチから、個々の機能と修正に取り組むトピック ブランチを作成します。機能/修正の準備が整ったら、それをdevelopにマージします。その時点で、同僚がマージした他のトピック ブランチとどのように相互作用するかをテストできます。develop が安定した状態になったら、それを master にマージします。masterから本番環境にデプロイすることは常に安全であるべきです。
スコットは、これらの長期実行ブランチをコードの「サイロ」と表現しています。そこでは、安定性の低いブランチのコードは、テストとチームによる一般的な承認の後、最終的に安定性が高いと見なされるブランチに「卒業」します。
このモデルでのワークフローは、段階的に次のようになります。
- バグを修正する必要があります。
- 開発ブランチに基づくmyfixというブランチを作成します。
- バグが修正されるまで、このトピック ブランチのバグに取り組みます。
- myfixをdevelopにマージします。テストを実行します。
- 修正作業中に、同僚が開発にマージした別のトピック ブランチhisfixと修正が競合していることに気付きました。
- これらの競合に対処するために、 myfixブランチにさらに変更を加えます。
- myfixを開発にマージし、テストを再度実行します。
- すべて正常に動作します。開発をmasterにマージします。
- マスターは安定しているため、いつでもマスターから本番環境にデプロイできます。
このワークフローの詳細については、Pro Gitの分岐ワークフローの章をご覧ください。