如何将GitHub主分支恢复到3次合并前的提交并保留后续更改
实现方案:回退main分支并保留最近3次合并的更改
方法一:GitHub网页UI操作(优先推荐)
1. 先把3次合并的更改存到新分支
- 打开仓库主页,点击顶部的「Branch: main」下拉框,输入一个新分支名(比如
saved-recent-merges),点击「Create branch: saved-recent-merges from main」。这个分支会完整保留当前main的所有内容,包括那3次合并的更改。
2. 找到3次合并前的目标提交
- 点击仓库顶部的「Commits」标签,翻找main的提交历史。通过「Merge pull request」的标识数3次合并,找到这3次之前的那个提交。
- 点击该提交的哈希值(一串字符)进入详情页,复制完整的提交哈希(点哈希旁的剪贴板图标就行)。
3. 把main回退到目标提交状态
- 回到仓库主页,再次点击「Branch: main」下拉框,输入临时分支名(比如
reset-main-temp),在「From」输入框粘贴刚才复制的目标提交哈希,点击「Create branch: reset-main-temp from <提交哈希>」。 - 进入「Pull requests」标签,点击「New pull request」。在「base」选
main,「compare」选reset-main-temp,创建这个PR。 - 检查PR的变更内容,确认是回退到目标提交的状态,然后点击「Merge pull request」完成合并(如果main有分支保护,需要先调整规则或让有权限的用户操作)。
- 合并后,main就回到了3次合并前的状态,而那3次合并的更改还在
saved-recent-merges分支里。 - 最后记得恢复main的分支保护规则(如果之前修改过)。
方法二:命令行操作
- 克隆仓库到本地:
git clone <你的仓库地址> - 切换到main分支:
git checkout main - 创建分支保存更改:
git branch saved-recent-merges - 查看提交历史找目标哈希:
git log --oneline,找到3次合并前的提交哈希 - 重置main到目标提交:
git reset --hard <目标提交哈希> - 强制推送到远程:
git push origin main --force(注意:main有分支保护的话,要先取消才能执行)
内容的提问来源于stack exchange,提问作者tendaitakas
相关产品推荐
相关产品推荐

