执行git add .后如何移除已暂存的大文件?
彻底移除Git中的大文件
仅暂存未提交的情况
要是这些大文件只是被git add过但还没提交到历史里,这么操作:
- 先核对
.gitignore里的文件路径,确保node_scripts/country_japan/Japan30mDSMv4.tif这类路径没写错 - 执行命令把文件从暂存区移除(本地文件保留):
git rm --cached node_scripts/country_japan/Japan30mDSMv4.tif - 提交这个修改:
git commit -m "移除暂存区的大文件" - 之后再推送就不会带这些文件了
已提交到历史的情况
如果这些大文件之前已经被提交过(哪怕你后来删了,Git历史里还存着),推送时还是会触发大小检测,这时候得改写历史彻底删掉:
- 旧版Git用
git filter-branch:git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch node_scripts/country_japan/Japan30mDSMv4.tif' --prune-empty --tag-name-filter cat -- --all - 新版Git推荐用更高效的
git filter-repo:git filter-repo --path node_scripts/country_japan/Japan30mDSMv4.tif --invert-paths - 强制推送到远程仓库(注意:改写历史后必须强制推送):
git push origin --force --all - 有标签的话也要同步更新:
git push origin --force --tags - 最后清理本地冗余的Git对象:
git for-each-ref --format='delete %(refname)' refs/original | git update-ref --stdin git reflog expire --expire=now --all git gc --prune=now
后续要注意的点
- 确保
.gitignore里的路径完全准确,别再误加大文件 - 如果是团队协作,一定要告诉其他成员重新拉取仓库,因为历史被改写了,本地旧分支会和远程冲突
内容的提问来源于stack exchange,提问作者spreaderman
相关产品推荐
相关产品推荐

