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

Git:通过checkout提交ID重新获取已删除的未跟踪文件

解决Git切换提交后无法恢复已删除文件的问题

这问题我碰到过好几次,其实核心原因是:当你已经处于目标提交的HEAD上时,git checkout <commitID> 不会主动覆盖工作区的修改(包括你手动删除文件的操作),Git会直接提示你“Already on 'xxxx'”,自然不会把文件恢复回来。给你几个靠谱的解决办法:

  • 方法一:用git restore精准恢复文件
    这是最推荐的方式,既能指定恢复单个/多个文件,也不会影响其他未提交的修改。命令格式如下:

    # 恢复单个文件
    git restore --source=你的CommitID -- 路径/文件名
    # 恢复该提交下所有被删除的文件(注意最后的点号)
    git restore --source=你的CommitID .
    

    这个命令会直接从目标提交中拉取指定文件,覆盖工作区的删除状态。

  • 方法二:先切换到其他分支再切回目标提交
    如果你不想记复杂的参数,这个笨办法也很有效:先切换回master分支(或其他任意分支),再重新切回目标提交,Git会重新构建工作区,自动把缺失的文件补回来:

    git checkout master
    git checkout 你的CommitID
    

    注意切换分支前如果有未提交的修改,要么提交要么暂存,避免Git报错。

  • 方法三:用git reset强制重置工作区
    这个方法会把工作区和暂存区完全重置为目标提交的状态,适合你确定工作区没有需要保留的未提交修改的情况:

    git reset --hard 你的CommitID
    

    ⚠️ 注意:--hard 参数会清除所有未提交的修改,使用前一定要确认工作区没有需要保留的内容!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:21:41