如何从Git存储库中删除那些烦人的Mac OS X.DS_Store文件?


当前回答

我参加晚会有点晚了,但我有一个好答案。要删除.DS_Store文件,请在终端窗口中使用以下命令,但要非常小心地使用“find”删除文件。在-name选项中使用特定名称是更安全的使用方法之一:

cd directory/above/affected/workareas
find . -name .DS_Store -delete

如果您想简单地在前后列出它们,可以省略“-delete”。这会让你放心,他们走了。

关于~/.gitignore_global建议:请注意这里。你想把这个漂亮的文件放在每个工作区的顶层并提交它,这样任何克隆您的repo的人都将从中受益。

其他回答

删除忽略的文件:

(.DS_Store)

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

永久删除此文件的最佳方法:

生成全局.gitignore文件:

echo .DS_Store >> ~/.gitignore_global

让Git知道您希望将此文件用于所有存储库:

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

就是这样。DS_Store将在所有存储库中被忽略。

$ git commit -m "filter-branch --index-filter 'git rm --cached --ignore-unmatch .DS_Store"
$ git push origin master --force

我做了:

git checkout -- ../.DS_Store

(#将本地更改(永久)丢弃到文件)而且效果很好!

结合benzado和webmat的答案,使用git rm进行更新,不会对发现的不在repo中的文件失败,并使其可为任何用户粘贴:

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