4

以前のある時点でブランチがマスターブランチにマージされ、ブランチからの変更がマスターに存在しなくなったという状況に遭遇しました。おそらくこれはマージの競合の誤った処理が原因でしたが、現時点ではよくわかりません。

以前にマージされたこのブランチの変更はマスターブランチで必要ですが、ブランチをマスターにマージしようとすると、Gitは「Alreadyup-to-date」というメッセージを返します。このブランチは以前にマージされていたためです。このブランチの再マージを強制的にマスターするための最良の方法は何ですか?

4

3 に答える 3

3

私はこれがあなたをやるだろうと思います

mkdir alreadyapplied.patches
git format-patch -o alreadyapplied.patches master..alreadyapplied

その後

git checkout -b wip master
git am alreadapplied.patches
# (do whatever's necessary to deal with conflicts here)
# (rebase wip here if the conflict resolution has taken
# long enough that the wip branch has gotten behind master)
git checkout -B master wip
git branch -d wip    
于 2013-02-06T20:05:31.477 に答える
0

別の方法は、マージの前にブランチのコミットIDを取得し、HEADをリセットしてそれを指すようにすることです。その後、必要な修正を行って、そのブランチをマスターに再マージできます。

すなわち

git reset (--hard/--soft/--mixed) _commit_ # where the _commit_ is the commit ID of the old branch
<work and make changes>
git commit -m "Made changes to commit before merging into master"
git checkout master 
git merge (--no-ff) otherBranch

HEADをリセットすると、そのコミット時の状態に効果的に戻ることができます。--hardオプションを使用すると危険な場合があることに注意してください。これは破壊的であり、インデックスと作業領域がコミットの段階とまったく同じように見えるためです(他の作業が失われます)。

于 2013-02-06T17:08:30.100 に答える
0

関与したコミットの数に応じて、それぞれを順番に選択することができます。

于 2013-02-06T15:29:44.573 に答える