You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何找回GitHub上被旧代码意外覆盖的新代码

GitHub仓库旧代码覆盖新代码后的找回方案

优先排查本地Git操作记录

  • 执行git reflog查看所有本地HEAD变动记录,包含被覆盖的提交、未推送提交、重置操作等,找到对应新代码的提交哈希(格式类似a1b2c3d HEAD@{1}: commit: 新增XX功能)
  • 确认目标提交哈希后,可执行git reset --hard <目标提交哈希>直接回退到对应版本

注意:执行git reset --hard前建议先把当前工作区所有文件手动备份到其他目录,避免误操作导致二次丢失

  • 如果你需要保留当前分支的改动,也可以执行git cherry-pick <目标提交哈希>,单独把丢失的新代码提交合并到当前分支

检查远程仓库的留存提交

  • 如果新代码之前已经推送到过远程仓库,先执行git fetch origin拉取全量远程提交记录,再执行git log origin/<你的分支名>查看远程提交历史,找到目标提交哈希后按上述方法恢复即可
  • 如果你是通过git push --force强制覆盖了远程分支,可以直接访问GitHub仓库网页端,进入「Commits」页面搜索你之前提交新代码的提交信息,GitHub会保留一段时间的历史提交记录,哪怕被强制覆盖也能查到对应哈希,拿到哈希后回到本地执行git fetch origin <目标提交哈希>拉取对应提交,再做恢复操作

找回未提交的新代码

如果你丢失的新代码还没有执行过git commit就被覆盖,可通过以下方式找回:

  • 执行git fsck --lost-found查找悬空的Git对象,所有未被引用的文件都会存放到.git/lost-found/other目录下,打开对应文件逐份查看即可找回代码片段
  • 检查你使用的IDE的本地历史记录:JetBrains系列IDE可右键项目选择「Local History」→「Show History」查看全量本地修改,VS Code可打开对应文件的「Timeline」面板查看单文件修改历史,多数情况下可以找到未提交的最新修改

内容的提问来源于stack exchange,提问作者BarakOren

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 15:36:00