0

現在、私はブランチfooにいて、ブランチからの変更をマージしたいと思っています。これは、説明が複雑な理由により、bar明らかに 's の履歴の一部であると git が考えています。foo

残念ながら、結果は、私が実行すると

git checkout foo
git merge bar

branchに取得したいAlready up-to-dateブランチに変更がありますが、メッセージを受け取ります。barfoo

私は2つの可能な解決策を考えました。

1 つの可能性は、単純に checkoutbarして別の場所にコピーし、 checkoutfooしてから、手動でマージを実行することです。これは機能しますが、手動のソリューションが存在する場合は、より少ない方法をお勧めします。

もう 1 つの可能性は、逆マージ、つまり代わりにマージfooすることです。bar残念ながら、これを試してみると、git の automerge は、bar保持したい の変更を正確に消去し、 からfooの変更に置き換えます。これは望ましくありません。

へのマージを許可するために、 git を強制bar的に未来と過去のふりをさせるにはどうすればよいですか?foobarfoo

4

1 に答える 1

1

賢明な解決策ではありませんが、うまくいくはずです:

ファーストラン

git diff -p foo bar <files_you_want_to_merge> > patch

fooパス ファイルを生成し、必要に応じて編集します (より新しいファイルを削除するなどbar)。

次に実行します

git checkout foo
git apply patch

に「疑似マージ」barfooます。

于 2013-06-04T07:07:24.807 に答える