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

Git提交误添大文件如何移除?Visual Studio+VSTS场景求助

别担心,这种误提交大文件的情况我处理过好多次,咱们一步步来解决你的问题:

先终止当前的推送进程

首先得把卡住的推送停下来:

  • 如果你用的是Visual Studio的Git图形界面,直接找到推送进度窗口,点击「取消」按钮就行;
  • 如果你是用命令行执行的推送,按下 Ctrl+C 就能强制终止推送进程。
移除本地提交中的大视频文件

接下来要把这个大视频文件从Git的提交历史里删掉,分两种情况处理:

情况1:大文件在最近一次提交里

如果这个视频是你最后一次提交才加进去的,操作最简单:

  1. 先把文件从Git的追踪列表里移除,但保留本地的文件(要是想删掉本地文件就去掉--cached参数):
    git rm --cached assets/你的大视频文件名.mp4
    
  2. 修改最后一次提交,把这个文件从提交里剔除:
    git commit --amend --no-edit
    
  3. 把这个视频的扩展名(或者完整路径)加到.gitignore里,避免以后再误提交:
    打开.gitignore文件,添加一行:
    *.mp4  # 或者写具体路径 assets/你的大视频文件名.mp4
    
  4. 把.gitignore的更改也合并到刚才的提交里:
    git add .gitignore
    git commit --amend --no-edit
    

情况2:大文件在更早的提交里(比如你说的第5项更改对应的提交)

如果这个视频是在之前的某个提交里加进去的,需要修改历史提交:

  1. 先找到包含这个大视频的提交哈希值:
    git log --oneline -- assets/你的大视频文件名.mp4
    
    执行后会输出类似这样的内容:abc123 Add new assets including video,其中abc123就是目标提交的哈希。
  2. 执行交互式rebase,回到目标提交的前一个版本:
    假设目标提交的前一个提交哈希是def456,执行:
    git rebase -i def456
    
  3. 在弹出的编辑器里,把目标提交前面的pick改成edit,保存并退出编辑器。
  4. 现在Git会回到那个提交的状态,执行移除追踪的命令:
    git rm --cached assets/你的大视频文件名.mp4
    
  5. 修改这个提交,剔除大文件:
    git commit --amend --no-edit
    
  6. 继续完成rebase,把后面的提交重新应用:
    git rebase --continue
    
  7. 同样,把视频扩展名加到.gitignore并提交:
    git add .gitignore
    git commit -m "Add video file to gitignore"
    
重新推送修改后的提交

因为你修改了Git的历史提交,需要用强制推送来覆盖远程的旧提交(注意:如果是多人协作的仓库,要先确认没有其他同事拉取过你之前的旧提交,避免冲突):

git push --force-with-lease

--force-with-lease比直接用--force更安全,它会检查远程仓库有没有新的提交,避免误覆盖别人的更改。

后续预防措施
  • 每次提交前,养成用git status查看待提交文件的习惯,确认没有大文件或敏感文件;
  • 定期检查.gitignore,确保所有不需要追踪的文件类型都已经添加进去;
  • 可以用git lfs(Git Large File Storage)来管理大文件,如果以后确实需要推送大文件到VSTS,VSTS是支持Git LFS的。
补充:如果已经推送到远程仓库怎么办?

要是你已经把包含大文件的提交推送到了VSTS,那除了上面的本地修改步骤,还需要执行强制推送覆盖远程的历史。之后要通知协作的同事,让他们重新拉取仓库,并且不要基于旧的提交进行工作,避免出现冲突。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:15:00