Working on Awesome Devtools this past week, I decided to make the repo public so others could contribute to it. I had one slight problem though, I had committed my
.env file which contained secrets I would rather the world not know.
So how would you delete a file like this? Well standard logic says just....delete it. But with git it's not that simple, when you delete something, even though the latest version of your code no longer has this thing, the previous version of your code still do. Simply deleting the file would not work.
There are two ways of deleting a file entirely in git. One way where you preserve your git history, and one where you do not.
If you want to delete a file while still preserving your git history, you can do so with a neat recipe from Github.
# Delete the file git rm --cached <your_file> # Commit the change git commit --amend -CHEAD # Push the commit git push
If you're like me and don't really care about your git history for a particular project, you can do it the way I did it and just nuke the file and all the history leading to the file.
git remote -v to get your current remote.
➜ git remote -v origin email@example.com:sgolovine/awesome-devtools.git (fetch) origin firstname.lastname@example.org:sgolovine/awesome-devtools.git (push)
Now delete your the file and also delete the
.git folder. Once you've deleted the file, recreate the git repository locally
git init git add -A git commit -m "Initial Commit" git remote add origin <url from step 1>
Finally do a force push to your remote to overwrite the previous history with
git push -f
That's it! If you know of a better way to delete a file from git history, leave a comment below and I will update the article. You can find more of my article here and on my blog