如何从git历史记录中删除“太大”的文件?

Liz*_*ner 5 git github

我将一个 212MB 的文件添加到我的文件夹并提交并尝试推送它。Git 告诉我文件太大,所以我无法推送它。我删除了该文件,但是当我尝试推送我的代码时它仍然显示。

我的实际步骤是:

  1. 我做了 git add .

  2. 然后 git commit -m "New css"

  3. 然后 git push origin development

  4. 然后花了很长时间运行上面的命令。最后说“path/to/file/file.mp4 是 212MB,太大了。推送失败”。

  5. 然后我手动删除了那个文件。

  6. 再次尝试推送,同样的问题。

其他stackoverflow答案告诉我使用 git filter-branch --tree-filter 'rm -rf path/to/your/file' HEAD

我只是想了解这意味着什么。这会影响我的整个 repo 还是只影响上面提到的文件?如果我已经手动删除了文件,会发生什么?所以文件路径不存在。

例如,因为我尝试推送到开发分支,所以我做了git push origin development. 这失败了,所以假设我要删除的文件名为 Testing.mp4,这应该是代码:

git filter-branch --tree-filter 'rm -rf public/uploads/videos/testing.mp4' HEAD

我对吗?同样,这只会删除视频而不会删除其他任何内容?

非常感谢您的帮助

小智 3

如果文件之前已添加到索引 ( git add path/to/file),则从文件系统中删除文件并不一定意味着将其从 git 中删除,而只是记录删除操作。

根据您之前所做的操作,git 可能会尝试按顺序推送您的各种操作:首先添加文件(由于文件大小而失败),然后删除它。

要真正停止跟踪此文件,您可以尝试将其从索引中删除:git rm --cached path/to/file

请记住,稍后始终是git rm有问题的文件,而不是简单地删除它,git rm将删除该文件并同时将其从索引中删除。

manojlds 的一个很好的扩展就在这里