git - how to remove a file that is too big from my current commit
本问题已经有最佳答案,请猛点这里访问。
当我执行以下操作时:
1 2 3 | git add * git commit -m"msg" git push origin develop |
我得到以下错误:
1 2 3 4 5 6 7 8 9 10 11 12 13 | Counting objects: 25, done. Delta compression using up to 4 threads. Compressing objects: 100% (24/24), done. Writing objects: 100% (25/25), 46.43 MiB | 2.49 MiB/s, done. Total 25 (delta 13), reused 0 (delta 0) remote: Resolving deltas: 100% (13/13), completed with 11 local objects. remote: error: GH001: Large files detected. You may want to try Git Large File Storage - https://git-lfs.github.com. remote: error: Trace: ffe0c9f32d9cde4cedfc1f4713eb82b9 remote: error: See http://git.io/iEPt8g for more information. remote: error: File tags is 282.99 MB; this exceeds GitHub's file size limit of 100.00 MB To https://mygithubrepo ! [remote rejected] develop -> develop (pre-receive hook declined) error: failed to push some refs to 'https://mygithubrepo' |
号
然后,我从硬盘上删除了文件"tags",但每次我尝试推送时,都会出现相同的错误。文件从未被推送到我的存储库,所以我只需要从当前提交中删除它。我试过很多次,但每次都会出现同样的错误。有什么帮助吗?
当我这样做的时候
1 | git ls-files |
列表中甚至没有显示文件"tags"。但它仍在努力推动它?
如果您在上一次提交中添加了大文件,德里克的回答是正确的。另外,如果希望避免再次添加它,请将其添加到.gitignore文件中。
所以,首先:
1 | git rm --cached <big_file> |
号
然后编辑您的
最后将这些更改添加到阶段
1 | git add . |
此时,如果您创建一个新的提交,您将无法推送,因为文件无论如何都将在Git文件夹中,因此您需要创建一个修复提交,以便在添加大文件时修改提交:
1 | git commit --fixup |
。
一旦你准备好了,你就需要重新平衡,有三种情况:
1-你在向大师承诺一切:
1 | git rebase ^ -i --autosquash |
2-您在一个分支中,而您的大文件提交在同一个分支中:
1 | git rebase master -i --autosquash |
。
3-您在一个分支中,而您的大文件提交在一个已合并的分支中:
1 | git rebase ^ -i --autosquash --preserve-merges |
。
这应该有效:
1 2 | git rm --cached <big_file> git commit --amend . |
这将从跟踪中删除该文件,然后修改上一个提交,使其也不包含该文件。