我确实有这种情况: 昨天我将提交 223a3a6 合并到主分支中,但由于未适应某些 JSON 数据而失败。我迅速撤销了合并以避免破坏生产服务器。提交 495b186 撤销了提交 223a3a6。 我在提交 215b7a6 中修复了 JSON 数据。现在当我想再次将其合并到主分支时,我需要提交 223a3a6 和 215b7a6 的更改内容都在主分支中。 问题是提交 223a3a6 已经被合并到主分支中。Git 不允许我再次将其合并到主分支中。我们的主分支受到写保护,所以我无法重置主分支。 我该如何解决这个问题,将提交 223a3a6 和 215b7a6 合并到主分支中?
这似乎几乎完全就是在 git howto-revert-a-faulty-merge 页面中描述的情况。我猜你可能使用了 "git revert -m" 命令来撤销合并。这将撤销文件的更改,但合并分支的事实仍然记录在案。因此,以后任何尝试合并该分支的操作都只会带入该合并之后的修订版本。"git merge -m" 的文档说:“撤消合并提交意味着您永远不想要合并所带来的树变更。因此,后续合并将只带入先前撤消合并的祖先提交中未引入的树变更。这可能是您想要的,也可能不是。”上述 howto 页面中提供的解决方案是撤销撤销合并的提交(这将重新引入该合并所做的更改),然后您应该能够合并该分支以引入修复。
时)。合并使用历史记录来(自动)构建树,但使用
--no-commit`,您可以将其拆分为单独的阶段。 - torekgit checkout 215b7a6
并运行git rebase master
。 - sa77