我遇到过这样一种情况,其中一个分支在之前的某个时间点被合并到主分支中,并且来自分支的更改不再在主分支中。这可能是由于对合并冲突的处理不当,但目前我还不确定。
在主分支中需要对先前合并的分支进行更改,但现在如果我尝试将分支合并到主分支,Git 会返回消息“已经是最新的”。因为该分支之前已合并。强制重新合并该分支以掌握的最佳方法是什么?
我想这会做你
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
根据涉及的提交数量,您可以依次挑选每个提交。
另一种方法是在合并之前获取分支的提交 ID 并将您的 HEAD 重置为指向它,然后您可以进行所需的任何修复并将该分支重新合并到 master
IE
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选项可能很危险,因为它具有破坏性,并且会使您的索引和工作区看起来与提交阶段完全相同(您将丢失其他工作)。