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


当前回答

在某些情况下,您可能还需要全局忽略某些文件。对我来说,.DS_Store就是其中之一。以下是操作方法:

git config --global core.excludesfile /Users/mat/.gitignore

(或您选择的任何文件)

然后像repo的.gitignore一样编辑文件。注意,我认为必须使用绝对路径。

其他回答

初始化存储库时,跳过包含

-u

这不应该是个问题。

以下方法对我来说效果最好。处理了不匹配的文件,以及本地修改的文件。作为参考,这是在运行git 1.7.4.4的Mac 10.7系统上。

查找并删除:

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

我还通过设置全局core.excludsfile来全局忽略.DS_Store。

首先,创建文件(如果还不存在):

touch ~/.gitignore

然后添加以下行并保存:

.DS_Store

现在配置git以全局尊重文件:

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

对于那些没有得到上述任何方法帮助的人,请尝试更彻底地检查您的.gitignore,它可能会在目录和子目录之间有一些规则组合,因此烦人的.DS_Store文件不会仅在这些文件夹中被忽略。例如,您希望忽略除自定义目录中的文件夹外的gensrc文件夹,因此可以使用以下.gitignore:

.DS_Store
gensrc
!custom/**

因此,在这个设置中,忽略了任何/path/.DS_Store,而不是自定义/gensrc/.DS_Store,修复程序将把.DS_Store条目移动到.gitignore文件的底部。

使用touch.gitignore命令创建.gitignore文件

并在其中添加以下行

.DS_Store

保存.gitignore文件,然后将其推送到git repo中。

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