从复制的.git目录恢复文件失败:git checkout仅显示带D的文件路径
解决Git从备份的.git目录恢复文件的问题
- 进入存放备份
.git目录的文件夹(比如你的tmp/) - 执行以下命令强制恢复工作区到仓库最新提交的状态:
git reset --hard HEAD - 如果你的主分支不是默认的
master,可以指定分支名,比如:git reset --hard main
为什么之前的git checkout没生效?
当你只复制.git目录到空文件夹时,Git会认为工作区的所有文件都被手动删除了,此时单纯执行git checkout只会输出这些被标记为删除的文件路径,但不会主动恢复。而git reset --hard HEAD会强制将工作区与仓库中HEAD指向的提交完全同步,直接从仓库中提取所有文件到工作区。
额外建议
- 备份
.git目录前,最好执行git status确保仓库没有未提交的修改,这样恢复后的状态和备份时完全一致。 - 如果备份时存在未提交的修改,恢复后可以用
git stash list查看,再用git stash apply恢复这些修改。
内容的提问来源于stack exchange,提问作者Ray Gllisse
相关产品推荐
相关产品推荐

