2016-05-27 4 views
0

これまでに何百万回も答えられたかもしれないが、それぞれの状況が異なり、私が私の場合に間違っていることを知りたい。私はgitにはとても新しいので、説明を感謝します。git merge releaseをマスターコンフリクトに分岐する

私はこのような歴史をコミットしている:(SourceTreeを使用して)現在のすべての変更は、ローカルに行われている

Screenshot of Source Tree

。青い線はdevelopブランチで、以前にリリースブランチが作成されていて(黄色)、後でmaster(ピンク色)にマージされていて、それはすべて問題ありませんでした。

次に、developブランチがさらにコミットされます。今私はから別のブランチを作成しました。これは最後のコミットに2番目のコミットだったrelease-ecommと呼ばれています。それから、別のコミットをrelease-ecommに追加しました。今、私はこのリリースブランチをmasterにマージしようとしています。 masterをチェックアウトし、マージして最新のコミットを選択しましたが、失敗しました。ここに記載されている

Merge Conflicts

ファイルは両方、編集および非編集したファイルが含まれています。 Style.cssScript.jsは編集されましたが、他のファイルは最後のコミット以降マスターされていませんでした。競合するファイルとそのようなそして、ツリー構造の変更:

Modified Tree Graph

私が望む何release-ecommに変更されているいくつかのファイルに加えられた変更を組み込むためmasterバージョンです。私は間違って何をしていますか?

+0

方法[gitの部分マージ、全体ではなくブランチ](http://stackoverflow.com/questions/4315948/についてgit-partial-merge-not-whole-branch) – antak

答えて

2

開発からrelease-ecommを分岐したので、開発からその時点までのすべての変更もマージに含まれます。

あなただけの単一の変更はマスターにコミットしたい場合は、git cherry-pickを使用します。

git checkout master 
git cherry-pick <commit hash> 
+0

私はそれを試みましたが、ブランチを実際にマージしませんでした。変更されたファイルをマスターのステージング領域に追加してから、それらを履歴に保存するために新しいコミットを作成しました。 – VeeK

+0

あなたが言ったことは、あなたが言ったことです_私が望むのは、リリース - ecommで修正された少数のファイルに加えられた変更を取り入れるためのマスタバージョンです - つまり、あなたがマージすることはできません - マスターではありません。マージを主張すれば、最初にリベースを行うことができますが、その戦略には利点はありません。 – 1615903

+0

ここで説明したように、私は[GitFlow](https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow)に従おうとしていました。最初のリリースはうまく統合されましたが、2番目に矛盾しました。私は理由を知ることができますが、プロジェクトの一部だけを変更する後続のリリースブランチをどのようにマージするのですか? – VeeK