如何从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文件,请不要使用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编辑器。
这将起作用:
find . -name "*.DS_Store" -type f -exec git-rm {} \;
它将删除所有名称以.DS_Store结尾的文件,包括._。DS_存储。
使用git rm删除它们,然后将.DS_Store添加到.gitignore以阻止它们再次被添加。你也可以使用bluegravest来阻止它们一起被创造出来
排名靠前的答案很好,但帮助像我这样的新手,下面是如何创建.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已被驱逐!’
结合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
推荐文章
- 访问限制:'Application'类型不是API(必需库rt.jar的限制)
- 为什么在Mac OS X v10.9 (Mavericks)的终端中apt-get功能不起作用?
- 为什么我需要显式地推一个新分支?
- 如何撤消最后的git添加?
- Rubymine:如何让Git忽略Rubymine创建的.idea文件
- Gitignore二进制文件,没有扩展名
- Git隐藏错误:Git隐藏弹出并最终与合并冲突
- “你有邮件”的消息在终端,os X
- 了解Git和GitHub的基础知识
- 没有。Git目录的Git克隆
- Git与Mercurial仓库的互操作性
- 忽略git中修改(但未提交)的文件?
- Mac OS X中的环境变量
- “git restore”命令是什么?“git restore”和“git reset”之间有什么区别?
- Git合并与强制覆盖