Max Yankov
Max Yankov

Reputation: 13277

.DS_Store still appears in git status despite being in .gitignore

$ 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?

Upvotes: 18

Views: 10787

Answers (2)

jub0bs
jub0bs

Reputation: 66183

.DS_Store still appears in git status despite being in .gitignore

That .DS_Store file is listed as a modified file in the output of git 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.

.gitignore itself is not modified, this version is committed.

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).

How can I fix that?

You need to tell Git to stop tracking that .DS_Store file, by running

git rm --cached -- <path_to_the_.DS_Store-file>

Because 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.

Upvotes: 17

VonC
VonC

Reputation: 1323045

Make sure .DS_Store isn't in the cache:

git rm --cached -- Assets/Sprites/.DS_Store

Upvotes: 24

Related Questions