git - 如何从当前提交中删除太大的文件

时间:2018-03-02 20:29:16

标签: git git-commit

当我执行以下操作时:

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);

我收到以下错误:

git add *
git commit -m "msg"
git push origin develop

然后我从硬盘上删除了文件'tags',但每次尝试推送时,都会出现同样的错误。该文件从未被推送到我的存储库,因此我只需要将其从当前提交中删除。我尝试过很多东西,但每次都会遇到同样的错误。有什么帮助吗?

当我这样做时

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'甚至没有显示在列表中。但它还是试图推动它吗?

2 个答案:

答案 0 :(得分:5)

如果你在上一次提交中添加了大文件,那么Derek的回答是正确的。 此外,如果您想避免再次添加它,请将其添加到.gitignore文件中。

所以,首先:

.gitignore

然后编辑添加大文件名的git add . 文件。

最后将这些更改添加到舞台

git commit --fixup <old-commit-hash>

此时如果你创建了一个新的提交,你就无法推送,因为无论如何文件都在你的git文件夹中,所以你需要创建一个fixup commit来修改提交的地方你添加了大文件:

git rebase <old-commit-hash>^ -i --autosquash

一旦你准备好了,你就需要改变,有3种情况:

1 - 你在主人身上承诺一切:

git rebase master -i --autosquash

2 - 你在一个分支中,你的大文件提交在同一个分支中:

git rebase <old-commit-hash>^ -i --autosquash --preserve-merges

3 - 你在一个分支中,你的大文件提交在一个已经合并的分支中:

{{1}}

答案 1 :(得分:4)

这应该有效:

git rm --cached <big_file>
git commit --amend .

这将从跟踪中删除文件,然后修改先前的提交以不包含此文件。