分离头,删除推送合并等

Detached Heads, Delete Pushed Merge, Etc

我正在尝试修复一个失灵的 git 存储库。问题来了。

需要完成的事情:

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

下图中,蓝色为master,红色为detached head。

这是第二张图片供参考。

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

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

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>

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

git push -f

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

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