git因为太大的已删除文件而阻止推送

时间:2014-09-06 14:30:19

标签: git branch

我在使用git存储库时遇到问题(也就是我通过git命令行工具推送的GitHub存储库)。

这是一个Rails应用程序。它实现的功能之一是下载.zip文件......根据设计,它们被创建并临时存储在服务器上(localhost)。问题是自动删除还没有实现。因此,在"服务器"上使用大约120MB的.zip文件,我决定git add -Agit commit -m "blabla"git push。 Pushing花了很长时间,最后出现了一条错误信息"文件太大,推迟中止"。

我放弃了当天推送并删除了有问题的文件。我继续工作,接下来的几天,开了一个新的分支,检查回分支大师,试图添加 - >提交 - >推送但是...关于超出大小的.zip文件的错误消息仍然存在!

发生了什么?!

请帮帮我!

1 个答案:

答案 0 :(得分:4)

当你运行git add; git commit时,git将zip文件添加到本地存储库。即使你删除了本地文件,git仍然在repo中拥有它,因为它保留了每个文件的副本。

由于您已将文件提交到本地git repo,因此您需要先将其从历史记录中删除,然后才能推送。为此,请按照以下答案: https://stackoverflow.com/a/2158271/1695439

答案归结为运行git filter-branch然后删除原始分支。请记住使用您的巨型zip文件的文件名替换giantfile.zip。

$ git filter-branch --index-filter 'git rm --cached -r --ignore-unmatch giantfile.zip' --prune-empty --tag-name-filter cat -- --all
$ git update-ref -d refs/original/refs/heads/master
$ git reflog expire --expire=now --all
$ git gc --prune=now