这超出了GitHub的文件大小限制。

10

我在 Github 存储库中有一些很大的文件,我试图将它们添加/提交/推送,但是推送命令返回以下错误:

远程:错误:文件 app_dump.sql 的大小为 106.67 MB,超出了 GitHub 的文件大小限制 100.00 MB

因此,我从存储库中删除了大文件(app_dump.sql),然后再次添加/提交/推送。但我认为这不是正确的做法,因为每当我推送时,它仍然会尝试推送这个大文件?

$ git status
On branch master
Your branch is ahead of 'origin/master' by 4 commits.
  (use "git push" to publish your local commits)

nothing to commit, working directory clean

现在每次推送时都会遇到相同的文件大小错误。我该如何从Git中删除这个文件?我尝试过

$ git rm app_dump.sql
fatal: pathspec 'app_dump.sql' did not match any files

但是这没有找到任何文件,因为我已经删除了它...谢谢,卡尔


你需要在添加大文件之前的修订版本上检出一个分支。将除了添加大文件以外的所有内容都变基到该分支之上。这将成为你的新“主分支”。 - Thilo
3个回答

14

尝试还原您所做的提交:

git reset HEAD~1

这应该可以撤销一个本地提交。撤销你的本地提交,直到包含大文件之前。删除大文件。提交你的更改然后推送。


请注意,这将压缩本地提交,操作者可能希望保留历史记录。 - Vasfed

4

请阅读这篇文章:https://help.github.com/articles/remove-sensitive-data/。基本上您需要重写存储库历史记录。但要始终小心使用git filter-branch命令!

git filter-branch --force --index-filter \
'git rm --cached --ignore-unmatch app_dump.sql' \
--prune-empty --tag-name-filter cat -- --all

如果我是你,我会先制作本地备份存储库。只需将整个文件夹复制到其他位置,以便您可以安心地在存储库上进行实验。

当您对结果感到满意时,请将其提交到Github,并记住这会重写历史记录,因此在此处删除的任何文件也将从Github的历史记录中消失。


在Windows上,您需要使用双引号而不是单引号。此外,请注意,您可以在文件规范中使用通配符。路径必须在Windows和Linux上都使用“/”作为分隔符。 - Shital Shah

4
在删除文件后,文件仍然会在git提交中保留,因此您需要编辑git历史记录,以从添加它的第一个提交中删除该文件。
对其之前的提交进行交互式变基:
- 运行 git rebase -i ThatCommitSha~1 并将 edit 放在该提交所在行(在编辑器中将 "pick" 修改为 "edit",然后保存文件 – 参见文档) - 变基将停在该提交处,使用git rm删除文件并commit --amend - 运行git rebase --continue 以链接所有接下来的提交(它们也将被更改,因为包含有文件的提交sha已更改)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接