如何为GitHub被误强制推送分支的旧提交创建分支?
为旧提交创建分支并修复原分支的方法
完全可以给那个旧提交创建专属分支,之后再修复混乱的原分支,具体步骤如下:
1. 获取旧提交的哈希值
打开PR页面,找到目标旧提交的入口(比如PR里的提交列表项),点击进入提交详情页,就能看到该提交的完整哈希值(一串40位字符,日常操作取前7位也够用);也可以在仓库的提交历史里直接找到这个旧提交的哈希。
2. 创建指向旧提交的分支
打开本地终端,切换到仓库所在目录,执行以下命令创建并切换到新分支:
git checkout -b 自定义分支名 旧提交哈希值
示例:git checkout -b recover-old-version 3f9d876
如果需要把这个分支同步到远程GitHub仓库,执行:
git push origin 自定义分支名
完成后,你就可以随时通过这个分支名检出旧提交的完整状态。
3. 修复原分支
根据团队协作场景,选择以下两种方式之一:
方式一:强制重置(适合确认无他人依赖新提交的场景)
先切换到原分支:
git checkout 原分支名
将原分支硬重置到旧提交的状态:
git reset --hard 旧提交哈希值
最后强制推送到远程,覆盖错误的分支状态:
git push -f origin 原分支名
方式二:合并保留历史(更安全的协作场景)
切换到原分支后,执行合并命令,用旧提交的内容覆盖当前分支,但保留历史记录:
git merge 自定义分支名 -s ours
这个命令会生成一个新的合并提交,让原分支内容回到旧提交的状态,之后直接正常推送即可:
git push origin 原分支名
4. 同步提醒
如果团队内有人已经拉取过被强制推送后的原分支,记得提醒他们执行git pull --rebase或者重新拉取分支,避免本地与远程的代码冲突。
内容的提问来源于stack exchange,提问作者vlad_tepesch
相关产品推荐
相关产品推荐

