首页 > 解决方案 > 分离头,删除推送合并等

问题描述

我正在尝试修复一个不正常的 git 存储库。这就是问题所在。

需要完成的事情:

  1. 删除合并。我试图对 master 上的先前提交进行硬重置,但最终将分离的 head 的提交压缩到 master 分支中。
  2. 如果可能,使分离的头及其提交的主分支
  3. 将头部分离到单独的分支后,在 master 中进行所有提交

下图中,蓝色为主,红色为分离头。

在此处输入图像描述

这是第二张图片供参考。

在此处输入图像描述

标签: gitgithubgit-mergegit-revert

解决方案


只要没有其他人克隆您的存储库,您就应该能够做到这一点。

从当前主节点创建一个分支:

git branch <branch name> <commit hash for last commit on master before the merge>

使 master 分离的头分支

git checkout master
git reset --hard <commit hash of last detached head commit before merge>

现在在本地,您应该处于您想要的状态,但是本地 master 与您的远程 master 具有不同的历史记录。您可能只是强制推送它以忽略远程主机

git push -f

然而,像 gitlab 和 github 这样的服务会默认阻止你这样做。

如果其他人拥有存储库的本地克隆,这将导致他们出现问题,如果您能够与受影响的每个人进行交流,那么制作新的克隆将是最简单的解决方法。


推荐阅读