我在使用git存储库时遇到问题(也就是我通过git命令行工具推送的GitHub存储库)。
这是一个Rails应用程序。它实现的功能之一是下载.zip文件......根据设计,它们被创建并临时存储在服务器上(localhost)。问题是自动删除还没有实现。因此,在"服务器"上使用大约120MB的.zip文件,我决定git add -A
,git commit -m "blabla"
和git push
。 Pushing花了很长时间,最后出现了一条错误信息"文件太大,推迟中止"。
我放弃了当天推送并删除了有问题的文件。我继续工作,接下来的几天,开了一个新的分支,检查回分支大师,试图添加 - >提交 - >推送但是...关于超出大小的.zip文件的错误消息仍然存在!
发生了什么?!
请帮帮我!
答案 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