2017-04-22 6 views
0

git cherry-pickを使用すると競合が発生します。
対象ブランチによる競合の原因が作業ブランチの手前です。
コミットが不足していると、私は新しいブランチをターゲットブランチにチェリーピックアップできません。
質問はどのように競合を見つけることができますか?私はチェリーピックアップで自分の新しいコミットを選択して、コミットが不足しているブランチをターゲットにして、コミットIDを列挙しますか?git cherry-pickを使用すると、私は自分のコミットを得ることができます。

私のプールの英語は申し訳ありません。

Branch A, whith commit 1,2,3,4,5,6 
Branch B, with commit 1,3 

6をコミット私はチェリーピック分岐Bに6をコミットするとき4. をコミットすると、競合が発生仲間です。

がある(のような4コミット)私はコミットこの桜選ぶことができるように、6 コミット仲間であるコミット把握する簡単な方法を持っている、とチェリーピックよりも6をコミットするのではなく、コミットされています4 & 5どちらも。

ありがとうございました。

+0

http://stackoverflow.com/q/42531657/2303202 – max630

+0

@SITUあなたがコミット何を意味しています6はコミット4との関連ですか? 4と6の両方が同じファイルを修正するか、6が4からマージされることを意味しますか? BTWでは、リベース中に競合が発生した場合でも、競合を手動または自動で解決してチェリーピックを終了することができます。あなたの枝の構造をグレーで説明すると、より明確になります。 –

+0

同じファイルを変更してください。 @Mortのように、私はより効率的な方法を見つけたいと思っています – SITU

答えて

0

オリジナルのコミットを見つけるには、チェリーピックの前にブランチAのファイルを追加/変更します。あなたは使用することができます。

git log B..A filename 

このコマンドは、意志の出力ファイルを変更しコミットし、コミットのみAを分岐に属します。あなたは早いが、出力の底にコミットした後、これはブランチBにコミットチェリー選ぶ見つけることができます。

git checkout B 
git cherry-pick <the earliest commit you found> 
0

私はあなたの質問を編集しようとしていましたが、編集はとても完了していました。私はあなたの元の質問を書き直しました。

おそらくそれはこれです:。

git cherry-pick Aしようとしたとき、私は競合を取得Bをコミットしているため、この競合がある、Aの祖先は、大規模でA結果をコミットし、先の支店で、それがないわけではありません宛先ブランチ内の競合。Bをコミットする方法を教えてください。

これはgitの質問ではありません。これは一般的な改訂管理の質問です。 Aが宛先ブランチにきれいに(または小さな競合があっても)ブロックされたり、ブロックされたコミットが複数ある可能性があります(A)。チェリーピックを行うときの衝突を見て、Aで変更されたすべてのファイルを見て、それぞれにgit log A -- <file>を実行して、その競合を修正する方法を見つけようとします。次に、あなたが何かを見つけるまで、様々な組み合わせをチェリーピックアップgit cherry-pick B Aしてみてください。

+0

ありがとうございます。それは手を出す方法です。しかし、Aに大きなファイルが変更された場合、これを行うのは難しいです。特に多くのコミットはAと関連しています。 – SITU

+0

ハードな問題には難しい解決策があります。上記の例では、問題を解決するためのプログラマチックなアプローチは、 'B':'(2,4,5) 'ではないすべてのコミットを把握し、それらのすべての組み合わせ(複数のものを含む) 6 'が入る。 – Mort

関連する問題