2016-09-18 4 views
0

特定のクライアント用に設計された管理パネルを開発しました。今、プロジェクトの要件は、非クライアント固有のコードは個別のgitブランチとして抽出され、プロジェクトの新しいクライアント固有のバリエーションの基礎として機能する必要があります。git repoから「クライアント固有の」コードから「汎用」コードを抽出するにはどうすればよいですか?

  1. は、スタンドアロンブランチとしての私の既存のプロジェクトからクライアント固有のコードを抽出します。

    TL私はすでに述べたようにDR

    私の目標は、にあります。

  2. 将来、ジェネリックブランチのすべての "汎用"機能/バグフィックスをコミットしてください。
  3. 汎用ブランチからクライアント固有ブランチに変更がマージされます。

問題は、私はクライアント固有のコードを抽出したら、そのブランチからすべてのクライアント固有の機能を削除するいくつかの新しいコミットを適用し、旧枝(クライアント特定の1)にそれをマージしようとすると発生します。

enter image description here

見ての通り、問題はgeneric-branchclient-branchに「1」をコミットのような非望ましい変化を適用すること、です。

それでは、既存のリポジトリから一般的な機能を抽出する適切な方法は、今後別のクライアント固有のブランチをブランチする目的のためにはどうすればよいでしょうか。

+0

具体的な例を示してください。 – jthill

+0

@質問を更新しました。はい、私はマスターイラストレーターとして働いています; –

答えて

1

あなたは非クライアント固有のコードを抽出し、コミット作成した後(commit-1)それから、このコミットをクライアント固有のブランチにマージします。このマージは、クライアントの特定のブランチの内容を変更するべきではない、あなたはoursマージ戦略を使用する必要があります。

git checkout client-branch 
git merge -s ours commit-1 

このマージの効果的な結果がclient-branchgeneric-branchのマージを以下は、マージベースとしてcommit-1を検討するということです。

+0

ありがとう、これは私が望んでいたものです –

0

あなたは桜-選ぶ2をコミットする代わりに、クライアント・ブランチにジェネリック・ブランチをマージする必要があります:あなたが必要とする、

git checkout client-branch 

git cherry-pick <commit-2> 
+0

このように、バグ修正や新機能を 'generic-branch'に送信するたびに、 'client-branch'に変更を適用するたびに一度だけピッキングします。これはオプションではありません –

関連する問題