关于git:git – 如何从当前提交中删除太大的文件

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>

然后编辑您的.gitignore文件,添加大文件名。

最后将这些更改添加到阶段

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 .

这将从跟踪中删除该文件,然后修改上一个提交,使其也不包含该文件。