我在我的文件夹中添加了一个212MB的文件并提交了它并尝试推送它。 Git告诉我,文件太大,所以我无法推动它。我删除了该文件,但在我尝试推送代码时仍会显示该文件。
我的实际步骤是:
我做了git add .
然后git commit -m "New css"
然后git push origin development
然后花了很长时间才能运行上面的命令。它结束时说" path / to / file / file.mp4是212MB,太大了。无法推送"。
然后我手动删除了该文件。
再次尝试推,同样的问题。
其他stackoverflow答案告诉我使用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
我是对的吗?同样,这只会删除视频而不会删除其他内容吗?
非常感谢您的帮助
答案 0 :(得分:0)
从文件系统中删除文件并不意味着如果以前将其添加到索引(git add path / to / file),则将其从git中删除,但只记录删除操作。
根据你以前的做法,git可能会尝试按顺序推送各种操作:首先添加文件(由于文件大小而失败)然后将其删除。
要实际停止跟踪此文件,您可以尝试将其从索引中删除:git rm --cached path / to / file
请记住以后总是" git rm"一个有问题的文件,而不是简单地删除它,git rm将删除文件并同时从索引中删除它。
manojlds的一个很好的扩展就在于:"git rm --cached x" vs "git reset head -- x"?
问候
答案 1 :(得分:0)
您的项目中包含的文件大小大于100MB,您可以在放入github之前使用BFG Repo-Cleaner删除这些大文件。
有一个有关How to solve Github import error: "We found an error during import"的教程。记住要备份您的项目源代码和git数据库。
下载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