What happens when you accidentally commit a large file in your local repo?

This was the error message I got when I tried to upload my changes to the remote repo. git push origin master.

remote: error: GH001: Large files detected. You may want to try Git Large File Storage - https://git-lfs.github.com.
remote: error: Trace: e397fc16b6c3b712eb7068d69417a5b1
remote: error: See http://git.io/iEPt8g for more information.
remote: error: File final_movie.mov is 317.20 MB; this exceeds GitHub's file size limit of 100.00 MB
To https://github.com/trickyj/daboo.git
! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'https://github.com/trickyj/daboo.git'

In order to resolve the above error. I wanted to remove that large size .mov file from my previous commit.

The first thing that came in my mind was to manually delete the final_movie.mov file from my project folder on my laptop. Then commit the changes.

But, this didn’t work. I was still getting the same error. The .mov file was already stored in my .git folder on my local machine project folder.

I searched on git documentation “how to remove the file from the previous commit”
I came across through this document – https://git-scm.com/book/en/v2/Git-Tools-Rewriting-History

Removing a File from Every Commit
This occurs fairly commonly. Someone accidentally commits a huge binary file with a thoughtless git add ., and you want to remove it everywhere. Perhaps you accidentally committed a file that contained a password, and you want to make your project open source. filter-branch is the tool you probably want to use to scrub your entire history. To remove a file named passwords.txt from your entire history, you can use the –tree-filter option to filter-branch:

$ git filter-branch –tree-filter ‘rm -f passwords.txt’ HEAD
Rewrite 6b9b3cf04e7c5686a9cb838c3f36a8cb6a0fc2bd (21/21)
Ref ‘refs/heads/master’ was rewritten
The –tree-filter option runs the specified command after each checkout of the project and then recommits the results. In this case, you remove a file called passwords.txt from every snapshot, whether it exists or not. If you want to remove all accidentally committed editor backup files, you can run something like git filter-branch --tree-filter 'rm -f *~' HEAD.

You’ll be able to watch Git rewriting trees and commits and then move the branch pointer at the end. It’s generally a good idea to do this in a testing branch and then hard-reset your master branch after you’ve determined the outcome is what you really want. To run filter-branch on all your branches, you can pass –all to the command.

My issue was resolved.

screenshots for reference

This slideshow requires JavaScript.

 

 

Leave a comment

About the author

Sophia Bennett is an art historian and freelance writer with a passion for exploring the intersections between nature, symbolism, and artistic expression. With a background in Renaissance and modern art, Sophia enjoys uncovering the hidden meanings behind iconic works and sharing her insights with art lovers of all levels. When she’s not visiting museums or researching the latest trends in contemporary art, you can find her hiking in the countryside, always chasing the next rainbow.