git - 分离头,删除推送合并等
问题描述
我正在尝试修复一个不正常的 git 存储库。这就是问题所在。
- 创建了一个没有分支的分离头,并对其进行了提交,认为它是主控
- 应该在不同分支上的更改已对真正的 master 进行
- 分离的头部被合并到master
需要完成的事情:
- 删除合并。我试图对 master 上的先前提交进行硬重置,但最终将分离的 head 的提交压缩到 master 分支中。
- 如果可能,使分离的头及其提交的主分支
- 将头部分离到单独的分支后,在 master 中进行所有提交
下图中,蓝色为主,红色为分离头。
这是第二张图片供参考。
解决方案
只要没有其他人克隆您的存储库,您就应该能够做到这一点。
从当前主节点创建一个分支:
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 这样的服务会默认阻止你这样做。
如果其他人拥有存储库的本地克隆,这将导致他们出现问题,如果您能够与受影响的每个人进行交流,那么制作新的克隆将是最简单的解决方法。
推荐阅读
- c++ - 我无法到达类方法的向量!我应该怎么办?
- c - 为什么这段代码的输出是 1(无限)?
- php - php 检查数组中的特定值是否包含大于 0 的值
- zsh - 我如何确定为什么这个 `test` 与 tmux 的 session_name 不匹配?
- c# - 将 SQL 查询转换为 linq lambda Entity Framework Core
- postgresql - 聚合函数作为元组参数 postgres
- python - 你如何比较字典和列表
- websphere - 如何在项目的资产类型中添加笔记本?
- javascript - 有没有办法使用 javascript 将样式应用于突出显示的文本?
- google-apps-script - 如何从谷歌脚本向 BigQuery 发出正确的 HTTP 请求