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

如何在Git/GitHub中恢复所有特定类型的已删除文件?

恢复Git仓库中所有被删除的特定扩展名文件

步骤1:克隆远程仓库到本地

先把远程仓库克隆到本地,确保能完整访问历史记录:

git clone <你的远程仓库URL>
cd <仓库目录名称>

步骤2:定位所有被删除的目标扩展名文件

用以下命令找出仓库历史中所有被删除的、指定扩展名的文件(示例中以.txt为例,替换成你需要的扩展名):

git log --all --diff-filter=D --name-only | grep "\.txt$" | sort | uniq
  • --diff-filter=D:仅筛选包含文件删除操作的提交
  • grep "\.txt$":过滤出.txt扩展名的文件
  • sort | uniq:去除重复的文件名(避免同一文件多次被删除的情况)

步骤3:批量恢复文件

执行以下bash脚本,自动恢复每个目标文件的最后存在版本:

git log --all --diff-filter=D --name-only | grep "\.txt$" | sort | uniq | while read file; do
  # 获取文件最后一次存在的提交哈希
  last_commit=$(git log --all --follow --format="%H" -- "$file" | head -n 1)
  # 从该提交恢复文件
  git checkout "$last_commit" -- "$file"
done

记得把脚本中的.txt替换为你实际需要恢复的文件扩展名。

步骤4:提交并推送恢复结果

确认所有文件恢复完成后,提交更改并推送到远程仓库:

git add .
git commit -m "恢复所有被删除的.txt文件"
git push origin <你的分支名>

注意事项

  • 若仓库体积较大,git log命令可能运行缓慢,可添加--no-merges参数跳过合并提交以加速:git log --all --no-merges --diff-filter=D --name-only
  • 恢复操作前建议备份本地仓库,避免误操作导致数据问题
  • 如果文件在多个分支中被删除,--all参数会遍历所有分支的历史,确保不会遗漏

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 02:10:20