如何从提交历史记录中删除错误提交的大文件?在删除有问题的文件之前,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
。似乎是在重写历史记录并将其从历史记录中删除,但我仍然无法推送。
答案 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
删除整个有问题的文件夹以强制以前的备份重写可以达到目的(假设您以前尝试过删除单个文件)