2026-01-08
git
00

目录

1. 如果还未提交更改
方法一:使用 git restore(Git 2.23+)
方法二:使用 git reset
2. 如果已经提交了删除
方法一:从之前的提交恢复
方法二:恢复到最后一次包含该文件的提交
3. 使用 git reflog 恢复
4. 实际示例
重要提示:

当你使用 git rm 删除文件后,可以通过以下几种方式恢复文件:

1. 如果还未提交更改

方法一:使用 git restore(Git 2.23+)

bash
# 恢复已暂存的更改 git restore --staged 文件名 # 恢复工作区文件 git restore 文件名

方法二:使用 git reset

bash
# 从暂存区移出,但保留工作区文件 git reset HEAD 文件名 # 从暂存区恢复文件 git checkout -- 文件名

2. 如果已经提交了删除

方法一:从之前的提交恢复

bash
# 先查看删除文件的提交记录 git log --oneline -- 文件名 # 恢复到指定提交的文件 git checkout 提交哈希^ -- 文件名 # 或 git restore --source=提交哈希^ 文件名

方法二:恢复到最后一次包含该文件的提交

bash
# 找到文件最后一次存在的提交 git rev-list -n 1 HEAD -- 文件名 # 从该提交恢复文件 git checkout 上一步获取的提交哈希 -- 文件名

3. 使用 git reflog 恢复

如果已经提交了删除,但想撤销整个提交:

bash
# 查看引用日志 git reflog # 重置到删除前的状态 git reset --hard HEAD@{1} # 或 git reset --hard 提交哈希

4. 实际示例

bash
# 场景:误删了文件 git rm important.txt git status # 看到文件被删除 # 情况1:还未 git add git checkout -- important.txt # 情况2:已经 git add git reset HEAD important.txt git checkout -- important.txt # 情况3:已经 git commit git log --oneline -- important.txt # 假设找到删除前的提交是 abc1234 git checkout abc1234 -- important.txt

重要提示:

  • 恢复前先执行 git status 确认当前状态
  • 使用 git rm --cached 只从索引删除,保留工作区文件
  • 重要操作前可先备份当前状态
  • 如果不确定提交哈希,可以用 git log --oneline -- 文件名 查看文件历史

本文作者:张京

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!