2011-11-14 10 views
2

根拠は、だから私は唯一の私はそれが怖いG + H + I + JGit diff前後のマージ後?この質問の

のコミットが含まれgitのdiffを探していますFinding a branch point with Git?

.-- X -- A -- B -- C -- D -- F (master) 
.   \ / \ /
.   \ / \ /
.    G -- H -- I -- J (branch A) 

でのようにすることができますブランチAはマスターに数回合併され、マスターはブランチAに複数回マージされたので、取得できませんでした。

+0

は助けるが、なぜEを犯すだろうことはできません取り残された:) – CodeReaper

答えて

1

git diff G JはG + H + I + Jを提供するはずですが、マージすることを心配しているので、おそらくG + H + Jの差分です。一時的なブランチを作成し、必要な差分を得るためにこれらのコミットを選択する必要があるのではないかと思います。

+0

はい、あなたは正しい、私はH + Jを必要とする、私がマージされたG + Iを必要としません。チェリーピッキングだけでなく、H + Jは2つのコミットだけではなく、もっとたくさんのことがあります。 –

+0

多分、チェリーピッキングを自動化することができます。私はもっ​​と良いことは考えられません。問題は、チェリーピッキングにも葛藤があり、それが基本的に私がより良い方法が存在するのを疑う理由です。 –

+0

コミットの数(約100)のためにコミットを1つずつ定義したくないので、チェリーピックの自動化を作成できませんでした。 –

0

残念ながら、何とか新しいコミットを作成せずに、これは実際に定義されていません。これは、Jによって導入diffがさえI、すなわちBCにマージされたものをせずに意味を成していない可能性があります。

何を求めていることは不可能であるためJは本当にBCから互いに素であると仮定すると、あなたが繰り返しパッチを適用せずに決定するために(一般的に)、組み合わせ差分を取得するために、何らかの形で、新たなコミットを作成する必要があります結果が何であるかを見ることができます。しかしこれを行う最も簡単な方法はチェリーピッキングではありません。代わりに、デフォルトでrebaseがコミットをマージ保持しないという事実を利用することができます。したがって:Jで行われた変更は、BCのものから分離できない場合

# create a temporary copy of branch A 
git branch branch-A-tmp branch-A 
# rebase that copy in place, thus removing the merge commits 
git rebase commit-A branch-A-tmp 
# examine the diff 
git diff commit-A branch-A-tmp 

、これを示す、Jを再適用する試みをリベースしたときに、競合をマージ得るでしょう、Iにマージされているデフます求めているのは明確ではない。それ以外の場合は、探しているdiffを取得します。

関連する問題