执行git push -f强制推送后丢失远程创建的README文件如何找回
找回被强制推送覆盖的远程README文件
直接在远程创建的README对应的提交未同步到本地时,回退本地提交的方案无效,按以下步骤操作即可找回:
- 优先翻查执行
git push -f origin main时的终端输出:强推操作执行时,终端一定会打印forced update from <旧提交哈希> to <本地新提交哈希>格式的提示,其中的旧提交哈希就是远程分支被覆盖前最后一次提交的ID,直接复制该哈希即可跳过后续查找步骤。 - 若已清空终端记录找不到上述提示,在本地仓库目录依次执行以下命令,拉取远程全量提交对象并列出无引用的悬空提交:
git fetch origin git fsck --lost-found
命令执行后输出的所有带dangling commit标记的条目,就是被强推覆盖后未被任何分支引用的旧提交,每个条目对应一串提交哈希。
- 逐个查看悬空提交的文件内容,定位包含目标README的提交:
git show <提交哈希值>
确认提交内包含需要找回的README文件后,执行命令将文件从该提交检出到本地工作区:git checkout <对应提交哈希值> -- README.md - 将找回的README提交推送回远程仓库即可:
git add README.md git commit -m "restore accidentally overwritten README" git push origin main
注意:Git服务端不会立刻清理被强推覆盖的提交,默认保留周期不短于2周,操作过程中不要手动执行
git gc类垃圾回收命令,文件即可正常找回。
内容的提问来源于stack exchange,提问作者haru
相关产品推荐
相关产品推荐

