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


当前回答

有几种解决方案可以解决这个问题。要避免创建.DS_Store文件,请不要使用OS X Finder查看文件夹。查看文件夹的另一种方法是使用UNIX命令行。要删除.DS_Store文件,可以使用名为DS_Store Terminator的第三方产品。要从整个系统中删除.DS_Store文件,可以使用UNIX shell命令。从应用程序启动终端:实用程序在UNIX shell提示符下,输入以下UNIX命令:sudo find/-name“.DS_Store”-dept-exec rm{}\;当提示输入密码时,请输入Mac OS X管理员密码。

此命令用于从文件系统的根(/)开始查找并删除整个计算机中出现的所有.DS_Store。要将此命令配置为作为计划任务运行,请执行以下步骤:从应用程序启动终端:实用程序在UNIX shell提示符下,输入以下UNIX命令:

sudo crontab-e当提示输入密码时,请输入Mac OS X管理员密码。在vi编辑器中,按下键盘上的字母I一次,然后输入以下内容:

15 1***根查找/-name“.DS_Store”-deth-exec rm{}\;

这称为crontab条目,其格式如下:

分钟小时DayOfMonth月DayOfWeek用户命令。

crontab条目意味着该命令将由系统在每天凌晨1:15由名为root的帐户自动执行。

命令从find开始一直到。如果系统未运行,则不会执行此命令。

要保存条目,请按Esc键一次,然后同时按Shift+z+z。

注意:步骤4中的信息仅适用于vi编辑器。

其他回答

无需在本地删除.DS_STORE

只需将其添加到.gitignore文件

gitinore文件只是一个文本文件,告诉Git在项目中要忽略哪些文件或文件夹。

命令

nano.git忽略写入.DS_Store,然后单击CTRL+X>y>点击返回gitstatus最后查看您的更改git-add.gitignoregitcommit-m'您的承诺信息'git推送原始主机

我发现snipplr的下面一行在擦除所有.DS_Store方面做得最好,包括一个具有本地修改的行。

find . -depth -name '.DS_Store' -exec git-rm --cached '{}' \; -print

--cached选项,保留本地.DS_Store,因为它无论如何都会被复制。

正如上面提到的,将.DS_Store添加到项目根目录的.gitignore文件中。那么它将不再在你的视线中(回购)。

排名靠前的答案很好,但帮助像我这样的新手,下面是如何创建.gitignore文件,编辑它,保存它,删除您可能已经添加到git的文件,然后将文件推到Github。

创建.gitignore文件

要创建.gitignore文件,只需触摸创建具有指定名称的空白文件的文件即可。我们希望创建名为.gitignore的文件,以便可以使用以下命令:

touch.gitignore

忽略文件

现在,您必须将告诉git忽略DS Store文件的行添加到您的.gitignore中。您可以使用nano编辑器来完成此操作。

nano.git忽略

Nano很好,因为它包含如何退出的说明。(按Ctrl-O保存,按Ctrl-X退出)

复制并粘贴Github要点中的一些想法,其中列出了一些要忽略的常见文件。要回答这个问题,最重要的是:

# OS generated files #
######################
.DS_Store
.DS_Store?

#是注释,将帮助您在文件增长时组织文件。

这篇Github文章也有一些一般的想法和指导原则。

删除已添加到git的文件

最后,您需要从目录中实际删除这些DS Store文件。

使用这个来自投票结果最高的命令。这将遍历目录中的所有文件夹,并从git中删除这些文件。

查找-name.DS_Store-print0|xargs-0 git rm-f--忽略取消匹配

将.gitignore推送到Github

最后一步,您需要实际提交.gitignore文件。

git状态

git-add.gitignore

gitcommit-m‘.DS_Store已被驱逐!’

如果要将DS_Store文件删除到每个文件夹和子文件夹:如果已提交DS_Store:

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

通过以下方式忽略它们:

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

以下方法对我来说效果最好。处理了不匹配的文件,以及本地修改的文件。作为参考,这是在运行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