Completely remove a file from whole git repository
Solution 1
Github provide a useful help page on removing files like this. There are also other questions on StackOverflow which cover this
- Completely remove unwanted file from Git repository history
- How can I completely remove a file from a git repository?
See also this section of the Pro Git book, an example given there:
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
After the cleanup, you could also try a git gc to further compress and clean up for repository.
Solution 2
There's a tool now called "BFG Repo-Cleaner", it's mentioned on github.com as an alternative to filter-branch https://help.github.com/articles/remove-sensitive-data/
Link to the tool's page https://rtyley.github.io/bfg-repo-cleaner/
Paulo Bu
I can make a lot of errors, but I'm an enthusiastic debugger. Follow me at @pbu88. My tiny website is https://paulobu.com. B.S in Computer Science, software engineer and computer enthusiast. The web is my natural environment though I have experience with all types of programming paradigms from functional programming to object oriented programming. Feel comfortable in both high and low level programming languages. Love to program, automate and to solve problems. Recently I've been working with Python and .NET. I've developed several applications with Django and ASP.NET on a lot of stuff :) and getting deep knowledge about programming best practices, open source, different programming languages and many more exciting things. Know about networking as well, computer security, encoding, etc. I am fond of computers in general and a passionate apprentice.
Updated on March 27, 2020Comments
-
Paulo Bu about 4 years
Using git for a project, I accidentally added to a commit a big
.zip
file. I didn't notice until I started uploading it to github. When I noticed, I hitctrl-c
,git remove
,git commit
and uploaded it again (now with the file untracked).I know that this wasn't the right choice to do, because once I committed the
.zip
, it stays in the repo until I revert the commit, but sadly I didn't.Now, when someone tries to download from the repo, it takes a lot of time to do it, sometimes yields
git the remote end hung up unexpectedly
(which I've read can be solved by doing somegit config
) and is very annoying.My point is: is there a way to tell further pull/fetch request that forget this specific file in this specific commit version?