.gitignore all the .DS_Store files in every folder

2019-01-29 14:37发布

I've added .DS_Store to the .gitignore file, but it seems that it is only ignoring .DS_Store in the root directory, not in every folder and subfolder.

How do I fix this?

标签: gitignore
8条回答
走好不送
2楼-- · 2019-01-29 15:05

I think the problem you're having is that in some earlier commit, you've accidentally added .DS_Store files to the repository. Of course, once a file is tracked in your repository, it will continue to be tracked even if it matches an entry in an applicable .gitignore file.

You have to manually remove the .DS_Store files that were added to your repository. You can use git rm --cached .DS_Store. Once removed, git should ignore it. You should only need the following line in your root .gitignore file: .DS_Store. Don't forget the period!

git rm --cached .DS_Store removes only .DS_Store from the current directory. You can use find . -name .DS_Store -print0 | xargs -0 git rm --ignore-unmatch to remove all .DS_Stores from the repository.

Felt tip: since you probably never want to include .DS_Store files, make a global rule. First, make a global .gitignore file somewhere, e.g. echo .DS_Store >> ~/.gitignore_global. Now tell git to use it for all repositories: git config --global core.excludesfile ~/.gitignore_global.

This page helped me answer your question: https://help.github.com/articles/ignoring-files

查看更多
淡お忘
3楼-- · 2019-01-29 15:07

Add**/.DS_Store into .gitignore for the sub directory


If .DS_Store already committed:

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

To ignore them in all repository: (sometimes it named ._.DS_Store)

echo ".DS_Store" >> ~/.gitignore_global
echo "._.DS_Store" >> ~/.gitignore_global
echo "**/.DS_Store" >> ~/.gitignore_global
echo "**/._.DS_Store" >> ~/.gitignore_global
git config --global core.excludesfile ~/.gitignore_global
查看更多
Explosion°爆炸
4楼-- · 2019-01-29 15:08

Step 1, delete all the *.DS_store files. One can run

git rm -f *.DS_Store

but be aware that rm -f can be a bit dangerous if you have a typo! Step two: add

*.DS_Store
.DS_Store

to .gitignore. This worked for me!

查看更多
够拽才男人
5楼-- · 2019-01-29 15:10

Your .gitignore file should look like this:

# Ignore Mac DS_Store files
.DS_Store

As long as you don't include a slash, it is matched against the file name in all directories. (from here)

查看更多
Root(大扎)
6楼-- · 2019-01-29 15:15

If .DS_Store was never added to your git repository, simply add it to your .gitignore file.

If you don't have one, create a file called

.gitignore

In your the root directory of your app and simply write

**/.DS_Store

In it. This will never allow the .DS_Store file to sneak in your git.

But, if it's already there, write in your terminal:

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

then commit and push the changes to remove the .DS_Store from your remote repo:

git commit -m "Remove .DS_Store from everywhere"

git push origin master

And now add .DS_Store to your .gitignore file, and then again commit and push with the 2 last pieces of code (git commit..., git push...)

查看更多
看我几分像从前
7楼-- · 2019-01-29 15:18

Add *.DS_Store to your .gitignore file. That works for me perfectly

查看更多
登录 后发表回答