$ cat .gitignore
# OSX
*/.DS_Store
.DS_Store
.DS_Store?
._*
.Spotlight-V100
.Trashes
Icon?
ehthumbs.db
Thumbs.db
$ git status
On branch develop
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: Assets/Sprites/.DS_Store
no changes added to commit (use "git add" and/or "git commit -a")
There are more unrelated files in .gitignore and status message right now, but .gitignore itself is not modified, this version is committed.
How can I fix that?
That
.DS_Store
file is listed as a modified file in the output ofgit status
, which means it's currently being tracked by Git. However, Git won't ignore a file that is currently being tracked, whether it be listed in your.gitignore
file or not.How did you get yourself in that situation? You must have inadvertently started tracking that
.DS_Store
file before adding the.DS_Store
entry in your.gitignore
.The list of files to ignore is not determined by any version of the
.gitignore
file that you may have committed, as you seem to believe. Instead, at any given time, Git uses the.gitignore
file that's in your working tree (if any).You need to tell Git to stop tracking that
.DS_Store
file, by runningBecause of the
--cached
flag, the problematic.DS_Store
file won't be removed from your working tree, but it will not be included in your subsequent commits, and it should be properly ignored from then on.Make sure
.DS_Store
isn't in the cache: