Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Removing .xcuserstate and DS_Store files from git

Tags:

In Xcode I noticed that .DS_Store and *.xcuserstate always change and don't need to be commited. So, I wrote a .gitignore file that contains this:

.DS_Store *.xcuserstate 

among other entries. Then I used:

git rm --cached *xcuserstate git rm ---cached .DS_Store 

To remove the these file types already under version control. However, when I go to merge Xcode tells me that there are changes that need to be committed. Those changes include .DS_Store files and .xcuserstate files.

So, I tried this:How can I Remove .DS_Store files from a Git repository?

find . -name .DS_Store -print0 | xargs -0 git rm --ignore-unmatch find . -name *.xcuserstate -print0 | xargs -0 git rm --ignore-unmatch 

and I got the same result. How do I remove these files from source control for good?

like image 943
Bryan Bryce Avatar asked Feb 19 '14 01:02

Bryan Bryce


People also ask

What is DS_Store file git?

The . DS_Store file is used to store Finder information about that folder, so it's has no use in a git repo.

How do I Untrack a file in git?

To remove a file from Git, you have to remove it from your tracked files (more accurately, remove it from your staging area) and then commit. The git rm command does that, and also removes the file from your working directory so you don't see it as an untracked file the next time around.


1 Answers

You need to commit your change after removing them from the staging area.

As you did already, run:

$ git rm --cached path/to/.DS_Store $ git rm --cached *.xcuserstate 

Note, you may have some in other directories, so you may need several invocations to get them all. At this point, your removals are staged in the index, but there's still more to do: add your .gitignore, and commit the final result:

$ git add .gitignore $ git commit -m "Remove and ignore .xcuserstate and .DS_Store files." 

Now they'll be removed from the repository, and ignored in the future. Note: this will remove the files for other people, even though you used git rm --cached locally. Unfortunately, there isn't much you can do about this. Also, the files are still in your history, so depending on what you do, you may see them in other branches until things get merged and all your branches are based on something that has the new commit.

like image 128
John Szakmeister Avatar answered Oct 07 '22 16:10

John Szakmeister