How can I Remove .DS_Store files from a Git repository? How can I Remove .DS_Store files from a Git repository? git git

How can I Remove .DS_Store files from a Git repository?


Remove existing files from the repository:

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

Add this line:

.DS_Store

to the file .gitignore, which can be found at the top level of your repository (or create the file if it isn't there already). You can do this easily with this command in the top directory:

echo .DS_Store >> .gitignore

Then commit the file to the repo:

git add .gitignoregit commit -m '.DS_Store banished!'


Combining benzado and webmat's answers, updating with git rm, not failing on files found that aren't in repo, and making it paste-able generically for any user:

# remove any existing files from the repo, skipping over ones not in repofind . -name .DS_Store -print0 | xargs -0 git rm --ignore-unmatch# specify a global exclusion listgit config --global core.excludesfile ~/.gitignore# adding .DS_Store to that listecho .DS_Store >> ~/.gitignore


The best solution to tackle this issue is to Globally ignore these files from all the git repos on your system. This can be done by creating a global gitignore file like:

vi ~/.gitignore_global

Adding Rules for ignoring files like:

# Compiled source ####################*.com*.class*.dll*.exe*.o*.so# Packages ############## it's better to unpack these files and commit the raw source# git has its own built in compression methods*.7z*.dmg*.gz*.iso*.jar*.rar*.tar*.zip# Logs and databases #######################*.log*.sql*.sqlite# OS generated files #######################.DS_Store.DS_Store?._*.Spotlight-V100.Trashesehthumbs.dbThumbs.db

Now, add this file to your global git config:

git config --global core.excludesfile ~/.gitignore_global

Edit:

Removed Icons as they might need to be committed as application assets.