私は小さなチームで、多くの高価なデータを扱う製品を開発しています。このデータにはコストがかかるため、ローカルでコードを完全にテストすることはできません。代わりに、クライアントに表示される運用サーバーと、テストに使用するステージング サーバーがあります。同様に、プロダクションに一致するブランチ (「マスター」を使用しています) と、ステージングに一致するブランチ (「ステージング」と呼ばれます) があります。
私は git ワークフローのトピックについてかなりの検索を行いましたが、それらはすべて、チームが何らかの開発ブランチ (おそらく直接、またはマージされた機能ブランチを使用して) を離れることを想定しているようです。そして、そのブランチ内のすべての準備が整うと、プロダクション ブランチにマージされ (最初に "リリース" ブランチを介して)、プロセスが繰り返されます。これが、人気のある成功した Git 分岐モデルの仕組みです。
問題は、「ステージング」ブランチ (前述の成功した Git ブランチ モデルの「開発」ブランチに最も近いブランチ) には、完成度のさまざまな段階にあるコードが定期的に含まれていることです。コードをローカルで完全にテストすることはできないため、不完全または壊れたコードがステージング ブランチに行き着くことが多く、アプリがステージング サーバーで処理する途方もない量のデータに対して実際にテストすることができます。本番環境にリリースする前に、ステージング ブランチのすべてが完全に完了し、テストされ、機能するのを待つことはできません。
では、これを処理する最善の方法は何ですか? これまでのところ、次のことを試しました。
- ステージングにマージできる「ステージング」ブランチに基づくフィーチャー ブランチ。
- テスト用にステージングにマージされ、準備ができたらマスターにマージされるフィーチャー ブランチ。これらのブランチをステージングまたはマスターに基づいて作成するのが最善かどうかはわかりません...
いずれにせよ、履歴がすべておかしくなっているため、実際には競合がない場所でマージの競合が発生しています。それはちょっと面倒です。これを行うためのより良い方法があるはずです!