如何恢复GitHub分支中已删除提交但未推送的文件
找回本地已提交但未推送的删除文件
别慌,这种本地提交后想找回误删文件的情况太常见了,我给你几个实用的解决办法,一步步来就行:
第一步:定位删除文件的提交记录
首先你得找到那个执行删除操作的commit,打开终端输入:
git log --oneline
你会看到一串精简的提交记录,找那条对应你删除4个文件的记录(通常会有类似delete 4 files的备注),记下它的哈希值(就是开头那串7位左右的字母数字,比如a1b2c3d)。
方法一:精准恢复单个/多个文件(推荐)
如果只想恢复那4个被删的文件,而不想改动其他提交记录,用这个方法最稳妥。你可以直接从删除提交的父版本里把文件拉回来:
# 替换成你找到的哈希值,或者如果是最后一次提交,直接用HEAD~1 git checkout <commit-hash>~1 -- path/to/file1 path/to/file2 path/to/file3 path/to/file4
执行完这条命令,那4个文件就会回到你的工作区,之后你只需要再执行git add和git commit,就能把恢复的文件保存到当前分支里。
方法二:撤销整个删除提交
如果你想彻底取消那次删除文件的提交操作(保留历史记录,更规范),可以用git revert:
git revert <commit-hash>
这条命令会生成一个新的提交,自动把之前删除的文件重新添加回来,你的提交历史里会同时保留删除和恢复的记录,适合需要追溯操作的场景。
方法三:回退到删除前的版本(谨慎使用)
如果那次删除提交是你当前分支的最后一次提交,而且之后没有做其他任何修改,你可以直接回退到删除前的版本:
git reset --hard HEAD~1
⚠️ 注意:这个操作会直接丢弃最后一次提交的所有改动,如果你在删除文件后还有其他提交,千万别用这个,会丢失那些提交的内容!
为啥合并其他分支、pull没用?
- 合并其他分支提示“branch is updated”,说明目标分支和当前分支的差异里不包含你要恢复的文件(或者当前分支的版本已经比目标分支新),所以合并不会帮你恢复。
pull是拉取远程仓库的代码,而你删除文件的提交还在本地没推送到远程,远程仓库里根本没有这个删除记录,所以pull自然没用啦。
内容的提问来源于stack exchange,提问作者user9813644
相关产品推荐
相关产品推荐

