删除 Git 历史提交记录中的大文件

git filter-branch 命令的作用是重写Git仓库历史记录,这里具体用于彻底删除大文件。该命令参数解析:

bash 复制代码
git filter-branch --force --index-filter "git rm --cached --ignore-unmatch multimodal-transport-system/data/road.geojson" --prune-empty --tag-name-filter cat -- --all

作用说明:

  1. --index-filter 会在每个历史提交中执行 git rm --cached 操作,从Git索引中永久删除:
    • multimodal-transport-system/data/road.geojson 指定要删除的路径
    • --ignore-unmatch 允许文件不存在时跳过报错
  2. --prune-empty 会自动删除因删除文件而产生的空提交
  3. --tag-name-filter cat 会保留并重写所有标签(tag)
  4. --all 表示对所有分支进行操作

最终效果:该文件会从所有分支的历史提交记录中被清除(包括已推送的远程记录),但本地工作目录中的实际文件不受影响。执行后需要使用 git push --force 强制覆盖远程仓库历史。

注意:这会改变项目历史哈希值,执行前请确保已备份仓库,且提前通知所有协作者需要重新克隆仓库。

相关推荐
江畔柳前堤18 小时前
第13章:docker生产环境部署实战
运维·git·docker·容器·代码复审
GuHenryCheng21 小时前
【ESP32】ESP-IDF开发环境搭建(cursor)
git·stm32·单片机·学习
kaka。。21 小时前
GIT安装+代码推送
git
明理的路灯1 天前
安装 git 开发工具
git
偏爱自由 !1 天前
5:IDEA中git的使用--git fetch 和 git pull 和解决冲突
git·elasticsearch·intellij-idea
偏爱自由 !1 天前
2:IDEA中git的使用--基础操作
java·git·intellij-idea
青山木2 天前
快速搭建免费的个人博客网站:Hexo + GitHub Pages + Butterfly 完整指南
git·github
江畔柳前堤2 天前
第16章:docker企业级实战综合项目
运维·git·安全·docker·容器·eureka
偏爱自由 !2 天前
一(0.1):配置git
java·git·intellij-idea
江畔柳前堤2 天前
第11章:Docker 安全加固
运维·git·安全·docker·容器·eureka·github