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

如何移除含大文件的Git提交且不改变当前项目内容

移除历史提交中的大文件且保留当前项目状态

你需要重写Git提交历史,把包含大文件的那次提交修改掉,同时保留后续移除缓存的提交。按以下步骤操作:

  1. 先备份本地仓库
    操作前先复制整个项目文件夹到其他位置,避免操作失误丢失数据。

  2. 启动交互式变基,修改前两次提交
    在项目根目录执行:

    git rebase -i HEAD~2
    

    这会打开一个文本编辑器,里面显示前两次提交的记录:

    pick dd65c50 Centralized model, Squeezenet weights, Seperate Images
    pick 289a05f Remove datasets dir from git
    

    把第一行的pick改成edit,保存并退出编辑器。

  3. 修改包含大文件的提交
    此时Git会回退到第一次提交的状态,执行以下命令移除大文件目录:

    git rm -r --cached DirName  # 把DirName换成你的大文件目录名
    

    然后修改这次提交,把大文件从历史中彻底去掉:

    git commit --amend --no-edit
    

    --no-edit参数会保留原提交的信息,不需要重新写提交说明。

  4. 完成变基
    执行命令继续变基流程:

    git rebase --continue
    

    这会把第二次提交(移除缓存的那次)应用到修改后的第一次提交之上。

  5. 推送到GitHub
    因为你修改了历史提交,需要强制推送覆盖远程仓库的历史:

    git push origin master --force  # 如果你的分支是main,就把master换成main
    

注意事项

  • 确认.gitignore文件已经正确包含了该大文件目录,避免后续再次误提交。
  • 如果该仓库有其他协作者,强制推送后他们需要重新拉取代码并同步本地历史,避免冲突。

内容的提问来源于stack exchange,提问作者Ruairí Grant

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 01:16:21