我将分支从测试合并到主。然后我需要恢复它,但我不能恢复合并提交,所以我做了rebase。但在rebase分支仍然显示为合并后,我看不到分支的差异。解决这个问题的可能方法是什么?
如果您想撤消合并,并且在您的情况下重写历史记录是可以的:
-
确保您有回购的备份(以防万一(。只需复制整个目录。
-
在合并前的提交的主分支上查找提交哈希。我们称之为
xyz
。这个git log命令让它变得简单:
git log --graph --all --pretty="%C(dim yellow)%h %C(dim cyan)%cd %C(auto)%d%C(reset) %s"
-
执行以下操作:
git branch -f master <xyz>
。 -
确保一切如你所愿:
- 查看更新的历史记录(例如,使用上面的gitlog命令(。它不应该再显示合并
- checkout master,并确保它是应该的。您也可以从这个上下文运行
git log --oneline
进行最后的验证
-
如果您之前已将合并主机推送到远程,则可以使用
git push -f
覆盖它(添加之前在推送命令中使用的任何其他参数(。⚠️注意:您正在重写历史记录,这可能会影响其他已经开始在合并主控形状上进行操作的用户
-
当您确定一切正常,并且没有丢失任何所需内容时,请删除备份副本但在你确定之前,把它放在身边几个星期也无妨