See the image below. My .gitignore file should be ignoring all files in src/dist, but isn't.
- 11,985
- 17
- 67
- 98
-
If you already added those files and `git` is tracking them, the `.gitignore` file has no effect because it is meant for untracked files. See a good solution here: https://stackoverflow.com/a/23673910/2430526 – SRG Apr 29 '22 at 01:05
13 Answers
.gitignore only ignores files that are not part of the repository yet. If you already git added some files, their changes will still be tracked.
To remove those files from your repository (but not from your file system) use git rm --cached on them.
- 11,706
- 3
- 20
- 40
-
63git rm --cached file_name.ext wroks fine for me to update gitignore for one file. thanks. – sybozz Nov 21 '19 at 06:31
-
6
-
11git rm -r --cached folder to recursively remove the cache on a folder – Pablo Pazos Sep 26 '20 at 15:42
-
Ignoring the files didn't work for me but I ignored the dist folder like Pablo mentioned and it worked beautifully! – Mahsa Oct 30 '20 at 16:36
-
@sybozz and with the beauty of bash pattern globbing (using the * character) it works for lots of files too. – Lorenzo Nov 17 '20 at 04:07
-
i am using "git rm --cached" and it is returning information - usage: git rm [
] [--] – Kamlesh Dec 04 '20 at 11:37... -n, --dry-run dry run -q, --quiet do not list removed files --cached only remove from the index -f, --force override the up-to-date check -r allow recursive removal --ignore-unmatch exit with a zero status even if nothing matched -
4
-
But, this shows that the file node is deleted and when I pushed my changes after executing this command, the file in the server got deleted :( . Did anyone else face this issue ? – Cjo Jul 20 '21 at 10:11
-
This did not work for me, but I noticed that my file had already been staged. Removing it via `git restore --staged
` did the trick! – markand Jul 23 '21 at 19:19 -
In case of error on applying command, use --force, -f before the file name that resolves the case!!! – WMS Aug 09 '21 at 21:12
-
User `.` for current working directory or specify another directory for successful execution – Muhammad Zubair Dec 27 '21 at 17:08
The .gitignore file ensures that files not tracked by Git remain untracked.
Just adding folders/files to a .gitignore file will not untrack them -- they will remain tracked by Git.
To untrack files, it is necessary to remove from the repository the tracked files listed in .gitignore file. Then re-add them and commit your changes.
The easiest, most thorough way to do this is to remove and cache all files in the repository, then add them all back. All folders/files listed in .gitignore file will not be tracked. From the top folder in the repository run the following commands:
git rm -r --cached .
git add .
Then commit your changes:
git commit -m "Untrack files in .gitignore"
Please note that any previous commits with the unwanted files will remain in the commit history. When pushing to GitHub be aware of a commit history that might contain .env or client_secret.json files.
Best practice is to create a .gitignore file and populate it with the folders/files you do not want tracked when starting a project. However, often it is necessary to add to the .gitignore file after realising that unwanted files are being tracked and stored.
- 2,464
- 1
- 15
- 20
- 3,041
- 1
- 9
- 4
-
2thank you for the answer. This really helped. Don't forget to push the repo up to git either – Chris Reed Apr 24 '20 at 13:15
-
1After using `git rm -r --cached .` rolling back all changes also works to re-add all of the files that should not be excluded with _.gitignore_. – Adam Hurwitz Aug 05 '20 at 17:51
-
3
-
-
-
Doing this lists every file in our repo as modified and wants to commit everything :( Even though none of the files have changed, git is considering them modified. Why is this? – NightCabbage Apr 11 '22 at 22:45
Follow These steps to work gitignore
Make changes in .gitignore file.
Run
git rm -r --cached .command.Run
git add .commandgit commit -m "Commit message"
-
I had to add git push -u origin main to see changes, but this worked for me, keep it up buddy ! – Diego Jul 08 '21 at 11:16
If your.gitignore file isn't ignoring your files and directories.
.gitignore just ignores files that have not yet been added to the repository. If you have already git added certain files, their modifications will be tracked. Use git rm -r --cached on such files to delete them from your repository (but not from your file system).
git rm -r --cached . #untrack files
git add . #re-adding the files
git commit -m "issue fixed" #commiting changes
git push #pushing changes
- 321
- 2
- 6
first check the .gitignore encoding.
make sure the encoding id utf-8.
then untracked unwanted file by using git rm --cached filename
now your problem fixed
- 93
- 1
- 5
Look at this : .gitignore is not working And particularly the remark from ADTC:
Make sure your .gitignore file uses ANSI or UTF-8 encoding. If it uses something else like Unicode BOM, it's possible that Git can't read the file. – ADTC Dec 14 '17 at 12:39
- 313
- 5
- 9
If you are using VS Code:
Check the .gitignore file's Encoding Type. Change it to UTF-8 if it is not.
Select the Reopen with Encoding option to change the file encoding.
This worked for me!
- 3
- 3
- 369
- 2
- 18
First delete the index.lock file from your git repo
rm -f .git/index.lock
and then add .gitignore
git add .gitignore
- 11,523
- 10
- 84
- 128
Its better to create .gitignore file in starting and mentioning the files we want to be ignored.
If you want to ignore some files then execute git rm -r --cached
- 33
- 6
I was facing the same issue and then I realized that I had not created the .gitignore file properly.
In my case for some reason I created a .gitignore.txt file. Git will still track the files in the .gitignore file even after you remove the '.txt'. extension and save it.
Try deleting your old file and creating a new .gitignore file by 'touch .gitignore' in terminal, which solved it for me.
For some of the files in my project I needed to use git filter-branch which is better explained in this answare.
- 640
- 1
- 6
- 14