如何找回被强制推送覆盖的远程分支中的readme.md文件
GitHub强制推送丢失README.md的恢复方案
以下是可直接落地的操作步骤,按优先级依次尝试:
1. 利用仓库事件日志找回悬空提交
你在网页端编辑提交的README会生成独立的提交记录,即使被后续强制推送覆盖,短时间内该提交依然会作为悬空提交保留在GitHub服务器:
- 登录GitHub进入对应仓库,修改地址栏URL为
https://github.com/<username>/<repo-name>/events进入仓库全事件日志页 - 找到你编辑README.md对应的提交记录,复制该提交的SHA哈希值
- 进入本地仓库目录,执行命令:
执行完成后,当前目录下的git show <复制的SHA值>:README.md > recovered_README.mdrecovered_README.md就是你丢失的版本内容
2. 从通知/工作流记录中提取内容
如果找不到对应的提交SHA,可通过关联记录提取完整内容:
- 检查你绑定GitHub的邮箱,网页端提交成功后默认会发送提交通知邮件,邮件内包含该次提交的完整diff,直接复制新增内容即可还原文件
- 若仓库开启了GitHub Actions功能,进入Actions标签页查找对应提交触发的工作流记录,工作流关联的提交信息不会被强制推送覆盖,点击提交记录即可查看当时的完整文件内容
3. 浏览器缓存兜底
如果你编辑README的网页标签页未关闭,直接刷新页面,部分浏览器的表单缓存会保留你编辑的全量内容,可直接复制导出。
注意:GitHub对悬空提交的保留周期为90天,超过周期的提交会被后台垃圾回收机制清理,无法再找回,请尽量在丢失后72小时内操作。
内容的提问来源于stack exchange,提问作者Dmytro Yakymenko
相关产品推荐
相关产品推荐

