How to remove “too large” file from git history?

↘锁芯ラ 提交于 2021-02-20 18:50:09

问题


I added a 212MB file to my folder and committed it and tried to push it. Git told me that the file size was too big so I can't push it. I deleted the file, but it is still shown when I try to push my code.

My actual steps were:

  1. I did git add .

  2. Then git commit -m "New css"

  3. Then git push origin development

  4. Then it took a long time to run the above command. It ended with saying "path/to/file/file.mp4 is 212MB which is too big. Failed to push".

  5. Then I deleted that file manually.

  6. Tried pushing again, same problem.

I was told by other stackoverflow answers to use git filter-branch --tree-filter 'rm -rf path/to/your/file' HEAD

I'm just trying to understand what this means. Will this affect my whole repo or just the above mentioned file? What happens if I manually deleted the file already? So the file path doesn't exist.

For example, since I tried pushing to the development branch, I did git push origin development. This failed, so assuming the file I'm trying to delete is named Testing.mp4, should this be the code:

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

Am I right? Again, this will ONLY delete the video and nothing else?

Thanks a lot for the help


回答1:


deleting the file from filesystem won't necessary mean removing it from git if it was previously added to the index (git add path/to/file), but just record a delete operation.

Depending on what you did previousy, git may be trying to push your various actions in order : add the file first (which fail due to file size) then delete it.

To actually stop tracking this file you could try to remove it from index : git rm --cached path/to/file

Remember later to always "git rm" a problematic file rather than simply deleting it, git rm will delete the file AND remove it from index at the same time.

A good expanation from manojlds lies here : "git rm --cached x" vs "git reset head -- x"?

Greetings




回答2:


your project contain files with size larger than 100MB, you can remove these large files using BFG Repo-Cleaner before putting to github.

There is a tutorial about How to solve Github import error: "We found an error during import". Remember to backup your project source code and git database.

Dowload BFG, clone your repository with --mirror flag and just run:

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


来源:https://stackoverflow.com/questions/45135185/how-to-remove-too-large-file-from-git-history

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!