1

興味深い問題があります。これに対する十分に単純な答えが見つからないようです。私は 3 つの追跡されたブランチを持っています: master, staging, production. マスターは、私が遊んで変更をマージするメイン コードです。ステージングは​​、heroku ステージング サーバーのセットアップと同じであり、本番環境はステージングと同じケースです。

インターネットを読んだ後 (私のブックマークを豆の木の記事に置き忘れた)、変更に取り組む良い方法は、マスターから分岐し、定期的にコミットしながら大量の変更を行うことです。次に、この機能ブランチが master にマージされ、私の開発マシンでテストされます。

次に、トリッキーな部分ですが、機能ブランチをステージング ブランチにマージしてから、heroku にプッシュする必要があります。ステージング テストが成功したら、機能ブランチも本番環境にマージしたいと考えています。

十分に単純です。トリッキーな部分は、ブランチごとにわずかに異なるセットアップを行っていることです。マスターにはいくつかの SSL がオフになっているなどがあります。ステージングにはいくつかの異なる証明書があります。プロダクションには、いくつかの newrelic 追跡などがあります。

を実行するgit mergeと、常に設定が上書きされるようです。これはとても痛いです。私はチェリーピッキングまたはgit checkout <file list>個々の変更をマージしてきました。他のすべてのものを持ち込まずに、「フィーチャーブランチからステージングブランチにすべてのコミット (変更セット) をマージする」方法はありますか?

4

1 に答える 1

1

チェリーピックルートに行く場合はgit-extract-patches、適切なコミットメッセージ (つまり、エクスポートするコミットを選択するために解析できるコミットメッセージ) があれば、を使用できます。

チェリー ピッキングにはいくつかの欠点 (重複と機能依存関係) があることに注意Stagingしてくださいfeature-branch

また、ブランチ間で異なる単一ファイルの場合、コンテンツ フィルター ドライバーも別のソリューションになる可能性があることに注意してください (マージの問題を回避します)。
例として、「異なるブランチにある同じ構成ファイルの異なるバージョン」を参照してください。

于 2012-11-26T11:39:38.337 に答える