I have a git repository hosted on Github. After committing many files, I am realizing that I need to create .gitignore
and exclude .exe
, .obj
files.
However, will it automatically remove these committed files from the repository? Is there any way to force that?
If you have not pushed the changes already:
git rm -r --cached .
git add .
git commit -m 'clear git cache'
git push
Even after you delete the file(s) and then commit, you will still have those files in history. To delete those, consider using BFG Repo-Cleaner. It is an alternative to git-filter-branch.
However, will it automatically remove these committed files from the repository?
No.
The 'best' recipe to do this is using git filter-branch
as written about here:
The man page for git-filter-branch contains comprehensive examples.
Note You'll be re-writing history. If you had published any revisions containing the accidentally added files, this could create trouble for users of those public branches. Inform them, or perhaps think about how badly you need to remove the files.
Note In the presence of tags, always use the --tag-name-filter cat
option to git filter-branch
. It never hurts and will save you the head-ache when you realize later taht you needed it
I had to remove .idea and target folders and after reading all comments this worked for me:
git rm -r .idea
git rm -r target
git commit -m 'removed .idea folder'
and then push to master
However, will it automatically remove these committed files from the repository?
No. Even with an existing .gitignore
you are able to stage "ignored" files with the -f
(force) flag. If they files are already commited, they don't get removed automatically.
git rm --cached path/to/ignored.exe
Source: Stackoverflow.com