2012-04-18 9 views
0

私のプロジェクトには2つの大きなブランチがあります - masterは "プロダクション"バージョン、ブランチXは "テスト"バージョンです。ブランチ特有のコミットをマークしてマージするのを防ぐ

は、私はこれら二つのブランチにおける等の展開の設定、データベースのconfigs、Googleウェブ分析IDに関連するいくつかのコードの調整を保つ互いから分離し、git merge Xがマスター上で起こるかgit merge masterをブランチ上で実行されるたびにマージされることを防ぐ必要がありますX.

信頼性の高い方法がありますか?「このブランチのみ」のコミットをマークしてください。

答えて

3

かんたん回答:ささいなことではありません。

代わりに、次のいずれかです。

  • チェリーそれぞれが(キーワードの例のためのメッセージをコミット)
  • は、これらのコミットせずに、第2のブランチを作成し、定期的にマージマークされたものを除く、コミット選びますそれらを含むブランチ。 "悪いコミットフリー"ブランチをマスターと新しいブランチにマージします。
+0

ありがとうございました!だから、私は2番目の選択肢によって、私が持っている必要があることを正しく理解しています...見てみましょう... 6つの枝? M = MasterとD = Developmentと仮定すると、D <= ConfigD + DClean、M <= ConfigM + MCleanなので、DCleanで開発し、DとMCleanにマージしますか?私はこれが最終的にConfigDをDにマージして設定を元に戻すたびに矛盾が生じるのではないかと疑う。 – alexandroid

+0

正直言って、私はチェリーピックの解決策を好むだろう。はるかに簡単です。 http://wiki.koha-community.org/wiki/Using_Git_Cherry_Pick – gracchus

1

これは理想的ではありませんが、私のプロジェクトでも同様のシナリオがあります。私の解決策は、master、devel、configの代わりに3つのブランチを維持することでした。 configブランチは、develのいくつかのポイントから分岐し、設定だけを含んでいます(したがって名前)。あなたが示しているように私はマスターとデベロの間で開発して融合することができ、テストする必要があるときは、rebaseを使ってconfigブランチをdevelの先端に移動します。

これはちょっと面倒です。特に、定期的にテストするのではなく、develのコミットをテストするのが好きな人なら、少なくとも機能します。

+0

枝が増えているように聞こえるかもしれませんが、私はマスターと開発のために別々の設定をしたいのですが...感謝! – alexandroid