我的github存储库中有一些大文件,我试图添加/ commit / push但是push命令给出了以下错误
remote:错误:文件app_dump.sql是106.67 MB;这超过了GitHub的文件大小限制为100.00 MB
所以我从我的存储库中删除了大文件(app_dump.sql)并再次添加/ commit / push。但我认为这不是正确的事情,因为每当我推动它仍然会尝试推送大文件?
$ 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
但是没找到任何文件,因为我删除了它... 谢谢 卡尔
答案 0 :(得分:4)
尝试恢复您提交的提交:
git reset HEAD~1
这应该撤消1个本地提交。撤消本地提交,直到包含大文件为止。删除大文件。提交您的更改然后推送。
答案 1 :(得分:2)
请参阅此文章: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的历史中消失。
答案 2 :(得分:2)
删除文件后仍然保留在git提交中,因此您必须编辑git历史记录以从首先添加它的提交中删除该文件。
在之前的提交上执行交互式rebase:
git rebase -i ThatCommitSha~1
并将edit
放在该提交的行git rm
文件和commit --amend
git rebase --continue
链接所有下一次提交(它们也将被更改,因为提交文件sha将更改)