在GitHub中,我意外地将错误的分支合并为主分支。 (可能来自 从下拉列表中选择时,手指滑动)在我意识到错误之前,合并已完成并被推送。
我看过:
Reverting a bad git merge from GitHub
Github: Changes ignored after revert
Reverting a git merge commit, then reverting the revert
Github Revert. Unsure about history
但是他们都没有成功地解决这个问题,除非我误解了某些内容,否则他们都表明恢复应该撤消坏合并,让我准备好稍后重新合并适当的分支。
我的结构是这样的:
config.eager_load = true
/master
/dev_2.0
/test_2.0
/dev_3.0
所有分支都从/test_3.0
分支出来。每个测试版本/master
都会推送到dev_x.0
,在每个最终产品发布时,test_x.0
都会合并到test_x.0
。
我们在master
分支上有一个标记(称之为test_tag_2.0
),它在部署时反映了test_2.0
分支。 2.0版已经投入生产并完成,3.0正在开发中。
test_2.0
专门用于已部署的代码,除了我之外,没有其他人接触过。主人不存在后续提交的危险。 /master
没有进一步的发展。
我想要做的是将错误合并(test_2.0
- > test_3.0
)回滚到合并前它所持有的状态,并执行正确的合并({{1} } - > master
)
根据有关Stack Overflow的几个主题的建议,我在本地仓库上执行了重置以撤消错误提交,并将其推送到远程。在GitHub中,它显示了历史上的成功还原。 gitk也显示了恢复。
这是我做的命令:
test_2.0
然后推到远程
但是,现在当我将master与不正确的源分支master
进行比较时,它显示master是当前的,并且该分支上的所有更改都是当前的。回复不应该撤消吗?
在执行恢复之后,它仍然显示master是正确的分支`git reset --hard HEAD@{1}`
。它不应该也表明情况并非如此吗?
所以我想要的最终结果是test_3.0
分支在各种方式上与错误合并之前的方式完全相同,以及从正确的test_2.0
分支进行新的合并到master
成功。