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

Git:如何恢复已放弃的Cherry-pick中的未提交本地更改?

恢复Cherry-pick Abandon后丢失的本地未提交更改

以下是几种可行的恢复方法,按优先级尝试:

1. 通过Git Reflog回溯操作前状态

Visual Studio的「Abandon」按钮对应Git原生命令git cherry-pick --abort,Git会完整记录所有操作历史,你可以通过reflog找回之前的状态:

  • 执行命令:git reflog
  • 在输出结果里找到标记为cherry-pick: aborting的条目,往前数一条就是你启动cherry-pick前的HEAD状态(格式类似HEAD@{2}: cherry-pick: start...)
  • 执行恢复命令:git reset --hard HEAD@{n}(将n替换为对应条目的序号)

2. 扫描Git对象数据库找回匿名文件版本

Git会持久化保存所有曾经存在的文件对象,哪怕未提交到版本库:

  • 执行命令:git fsck --lost-found
  • 进入仓库目录下的.git/lost-found/other文件夹,这里存放着Git扫描到的未被引用的文件对象
  • 用git show <对象ID>查看每个对象的内容,找到你丢失的修改后,复制内容到对应的本地文件即可

3. 利用Visual Studio本地文件历史恢复

Visual Studio自带独立于Git的本地文件版本记录,不受Git操作影响:

  • 在VS中打开丢失文件所在的项目,右键点击目标文件(若文件已被删除,可在解决方案资源管理器中右键对应目录,选择「添加」→「现有项」定位原文件位置)
  • 选择「查看历史记录」,在弹出的版本列表中找到你修改过的版本,右键选择「恢复」

关键提醒

  • 不要在仓库内执行新的提交、修改或清理操作,避免覆盖Git暂存的临时对象
  • 如果git fsck返回的对象过多,可以用git show <对象ID> | grep "你记得的代码片段"快速定位目标文件

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 17:37:08