从提交历史记录中删除错误提交的大文件

时间:2019-04-09 01:52:58

标签: git

如何从提交历史记录中删除错误提交的大文件?在删除有问题的文件之前,Git不会将任何提交提交到远程。此后,我尝试删除它们,但它们存在于先前的提交中。

注意:我在项目中不再需要大文件。

git push origin my-branch上,我得到:

remote: warning: File public/images/reserve_assets/myfile.tif is 63.60 MB; this is larger than GitHub's recommended maximum file size of 50.00 MB
remote: error: GH001: Large files detected. You may want to try Git Large File Storage - https://git-lfs.github.com.
remote: error: Trace: 0c08ce8916353c82c7328a241a40c8ca
remote: error: See http://git.io/iEPt8g for more information.
remote: error: File public/images/reserve_assets/myotherfile.tif is 107.34 MB; this exceeds GitHub's file size limit of 100.00 MB

然后

! [remote rejected] my-branch -> my-branch (pre-receive hook declined)
error: failed to push some refs to 'git@github.com:RepoOwner/myrepo.git'

我尝试了git filter-branch --tree-filter 'rm -f myfile.tif' HEAD来执行整个提交历史记录的重写。输出

Rewrite 1cd9b031d047d4270ff8b488b3b5e8db2905c687 (87/93) (12 seconds passed, remaining 0 predicted)

但是然后说WARNING: Ref 'refs/heads/my-branch' is unchanged。似乎是在重写历史记录并将其从历史记录中删除,但我仍然无法推送。

1 个答案:

答案 0 :(得分:1)

我还有其他很大的文件。每次创建单个备份时,您无法一次通过git filter-branch --tree-filter 'rm -rf path/to/your/file' HEAD删除单个文件。

通过git filter-branch -f --tree-filter 'rm -rf path/to/folder' HEAD和其他-f删除整个有问题的文件夹以强制以前的备份重写可以达到目的(假设您以前尝试过删除单个文件)