git checkout . 命令作用是什么?误执行后如何恢复已修改文件?
git checkout . 的作用
git checkout . 命令的作用是将当前工作目录下所有已被Git跟踪的文件,回退到和当前分支最新提交(HEAD)完全一致的状态,所有未暂存的修改都会被直接丢弃,且不会进入Git的暂存区或提交记录,也不会触发系统层面的文件删除提示。该命令不会改动从未被Git跟踪的文件,所以你项目里的未跟踪日志文件还保留,和你后续看到的git status结果一致。
你执行的命令中额外追加的文件路径属于冗余参数,最终执行效果和单独运行git checkout .完全一致,因此你所有已修改的已跟踪文件的改动都被清空了。
已修改文件的恢复方案
根据你之前的操作不同,恢复可能性有差异:
- 情况1:你此前曾对这些文件的修改执行过
git add暂存操作(哪怕之后又做了改动没有重新暂存):
可以通过Git的悬空对象找回暂存过的版本,操作步骤如下:- 在项目根目录执行
git fsck --lost-found - 命令执行完成后,打开项目下的
.git/lost-found/other目录,目录内的文件就是所有历史暂存过的文件内容 - 逐个打开文件匹配内容,找到对应文件后将内容复制回原项目路径即可
- 在项目根目录执行
- 情况2:你从未对这些修改执行过
git add或git commit操作:
Git本身没有存储过这些未进入Git工作流的改动,无法通过Git命令找回。你可以尝试通过代码编辑器的本地历史记录、操作系统的还原点、第三方文件恢复软件等Git之外的手段尝试恢复。
内容的提问来源于stack exchange,提问作者Morilla Thaisa
相关产品推荐
相关产品推荐

