问题
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:
I did
git add .
Then
git commit -m "New css"
Then
git push origin development
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".
Then I deleted that file manually.
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