无法推送至master分支时,如何清理Git历史并更新远程仓库?
Git历史中移除大型.CSV文件的问题与解决
问题背景
- 本人Git基础知识薄弱,需移除仓库历史中的大型
.CSV文件(因文件后缀为大写,未被.gitignore拦截) - 本地已完成历史清理操作,
.git目录大小从2GB降至400MB,但因管理员禁止直接推送至master分支,无法将清理结果同步到远程仓库;曾在分支执行相同清理步骤并创建PR,但无效果
尝试的本地清理方法
方法1:使用git filter-branch
git filter-branch --force --index-filter \ "git rm --cached --ignore-unmatch -r '*.CSV'" \ --prune-empty --tag-name-filter cat -- --all
方法2:使用git filter-repo插件
git gc git filter-repo --replace-refs delete-no-add --strip-blobs-bigger-than 50M git reflog expire --expire=now --all git gc --aggressive --prune=now
解决结果
清理Git历史后,常规操作是执行强制推送命令同步远程:
git push origin master -f
但此类修改仓库历史的操作必须直接修改主分支,分支清理后提PR无法生效。经确认后,由管理员协助完成了强制推送操作,问题已解决。
内容的提问来源于stack exchange,提问作者Adav
相关产品推荐
相关产品推荐

