私はHTMLファイルのリポジトリをgit rebaseしたいと思っています。私はBにFをリベースしたいのですが、私は、私はC. CがALLでテキストをリフロー変更を導入したくない問題を抱えている変更されたファイルのみをリベースする方法
-- A -- B
\
\-- C -- D -- E -- F
:私はのように見えるレポを持っていますHTMLファイルのこれらのコミットで変更されたファイルのD、E、Fからの変更のみが必要です。
だから、他の言葉で、私が欲しい:EXCEPT
-- A -- B -- D' -- E' -- F'
は:私が最後にgit diff --name-only C..F
から返されるFからファイルを含めるためにコミットしたい、とBからのファイルの残りの部分
私のために動作しませんものがある:
git rebase --onto B D F
私は散らかっマージを行うには、手動で私がするファイルを選択する必要があるため。私は-X theirs
を追加することができますが、私は望んでいないCからファイルを取得します。
それで、私のやっかいなことは、Bの上に新しいカスタムコミットを作成するだけです.Fのファイルにはgit diff --name-only C..F
がコピーされます。
これを行うには良い方法がありますか?
(参考のために、ここで私は完全にgitを使用せずにそれを行う方法です):
git diff --name-only C..F | xargs -I{} -n1 sh -c "git show F:{} > {}"
git cherry-pickを使ってみましたか? – Tim
git cherry pickは、同じ問題を抱えています。あなたが選んでいるだけのファイルを選ぶことができない限り、おそらくあなたは知りません。 – Brian
'C'を除いて' D'を 'F'で保持するリベースは、' git rebase -onto D F'ではなく 'git rebase -onto B C F'でなければなりません。あなたが望んでいないファイルが含まれていれば、それはあなたの最初の主張に反して 'F'で' D'にあるものすべてを望んでいないことを意味します。 – torek