我在我的文件夹中添加了一个 212MB 的文件并提交并尝试推送它。Git 告诉我文件大小太大,所以我无法推送它。我删除了该文件,但当我尝试推送代码时它仍然显示。
我的实际步骤是:
-
我做了
git add .
-
然后
git commit -m "New css"
-
然后
git push origin development
-
然后运行上述命令花了很长时间。它以"path/to/file/file.mp4是212MB结束,这太大了。推不动失败"。
-
然后我手动删除了该文件。
-
尝试再次推动,同样的问题。
其他堆栈溢出答案告诉我使用git filter-branch --tree-filter 'rm -rf path/to/your/file' HEAD
我只是想理解这意味着什么。这会影响我的整个存储库还是仅影响上述文件?如果我已经手动删除了文件,会发生什么情况?因此,文件路径不存在。
例如,由于我尝试推送到开发分支,因此我确实git push origin development
.这失败了,所以假设我尝试删除的文件名为 Testing.mp4,这应该是代码:
git filter-branch --tree-filter 'rm -rf public/uploads/videos/testing.mp4' HEAD
我说的对吗?同样,这只会删除视频,没有别的?
如果文件之前已添加到索引(git add path/to/file
(,则从文件系统中删除文件并不一定意味着将其从 git 中删除,而只需记录删除操作。
根据您之前所做的操作,git 可能会尝试按顺序推送您的各种操作:先添加文件(由于文件大小而失败(,然后删除它。
要实际停止跟踪此文件,您可以尝试将其从索引中删除:git rm --cached path/to/file
请记住,稍后要始终git rm
有问题的文件,而不是简单地删除它,git rm
将删除该文件并同时将其从索引中删除。
来自马诺伊尔德的良好驱逐就在这里
您的项目包含大小大于 100MB 的文件,您可以在放入 github 之前使用 BFG Repo-Cleaner 删除这些大文件。
有一个关于如何解决Github导入错误的教程:"我们在导入过程中发现了一个错误"。请记住备份您的项目源代码和 git 数据库。
Dowload BFG,用--mirror
标志克隆你的仓库,然后运行:
java -jar bfg-1.13.0.jar --no-blob-protection --strip-blobs-bigger-than 100M your-repo.git
cd your-repo.git
git reflog expire --expire=now --all && git gc --prune=now --aggressive
git push