如何从Git存储库中删除.DS_Store文件?
我怎样才能从Git仓库中删除那些烦人的Mac OS X .DS_Store
文件?
从存储库中删除现有的文件:
find . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch
添加行
.DS_Store
到文件.gitignore
,它可以在你的仓库的顶层find(或者如果它不存在的话就创build)。 然后
git add .gitignore git commit -m '.DS_Store banished!'
结合benzado和webmat的答案,使用git rm
更新,而不是发现没有回购的文件失败,并将其粘贴到任何用户一般:
# 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
解决这个问题的最佳解决scheme是全局忽略来自系统上所有git仓库的这些文件。 这可以通过创build一个全局gitignore文件来完成,例如:
vi ~/.gitignore_global
添加忽略文件的规则,如:
# 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 .Trashes ehthumbs.db Thumbs.db
现在,将这个文件添加到你的全局gitconfiguration中:
git config --global core.excludesfile ~/.gitignore_global
编辑:
已删除图标,因为它们可能需要提交为应用程序资产。
在某些情况下,您可能还想忽略全局的一些文件。 对我来说,.DS_Store就是其中之一。 就是这样:
git config --global core.excludesfile /Users/mat/.gitignore
(或者您select的任何文件)
然后像回购的.gitignore一样编辑文件。 请注意,我认为你必须使用绝对path。
我不得不在上面改变git-rm到git rm来让它工作:
find . -depth -name '.DS_Store' -exec git rm --cached '{}' \; -print
使用git-rm
删除它们,然后将.DS_Store添加到.gitignore
以阻止它们再次被添加。 你也可以使用blueharvest来阻止他们一起创build
如果因为更改了分段使用而无法删除文件:
git rm --cached -f *.DS_Store
打开terminal并input“cd <ProjectPath>”
-
删除现有文件:
find . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch
find . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch
-
nano .gitignore
-
添加这个
.DS_Store
-
键入“ctrl + x”
-
键入“y”
-
input保存文件
-
git add .gitignore
-
git commit -m '.DS_Store removed.'
以下对我最有效。 处理不匹配的文件和本地修改的文件。 作为参考,这是在运行git 1.7.4.4的Mac 10.7系统上。
查找并移除:
find . -name .DS_Store -print0 | xargs -0 git rm --ignore-unmatch -f
我也通过设置一个全局的core.excludes文件来全局忽略所有版本库中的.DS_Store。
首先,创build文件(如果不存在的话):
touch ~/.gitignore
然后添加以下行并保存:
.DS_Store
现在configurationgit来全局尊重文件:
git config --global core.excludesfile ~/.gitignore
我发现从snipplr的下面的行最好擦拭所有.DS_Store,包括一个本地修改。
find . -depth -name '.DS_Store' -exec git-rm --cached '{}' \; -print
– caching的选项,保持您的本地.DS_Store,因为它会被转载。
就像上面提到的一样,将.DS_Store添加到项目根目录下的.gitignore文件。 那么它将不再在你的视野(回购)。
使用此命令删除现有的文件:
find . -name '*.DS_Store' -type f -delete
然后将.DS_Store
添加到.gitignore
最受赞赏的答案是真棒,但帮助像我这样的新秀,这里是如何创build.gitignore文件,编辑它,保存它,删除您可能已经添加到git的文件,然后将文件上推到Github。
创build.gitignore文件
要创build一个.gitignore文件,只需touch
创build一个具有指定名称的空白文件的文件即可。 我们要创build名为.gitignore的文件,以便我们可以使用以下命令:
touch .gitignore
忽略这些文件
现在你必须添加一行,告诉git忽略DS存储文件到你的.gitignore。 你可以使用nano编辑器来做到这一点。
nano .gitignore
纳米是很好的,因为它包括如何摆脱它的指示。 ( Ctrl – O保存, Ctrl – X退出)
复制并粘贴这个Github gist的一些想法,其中列出了要忽略的一些常用文件。 回答这个问题最重要的是:
# OS generated files # ###################### .DS_Store .DS_Store?
#是评论,并会帮助你组织你的文件,因为它增长。
这篇Github文章也有一些一般的想法和指导。
删除已经添加到git的文件
最后,您需要从您的目录中实际删除这些DS Store文件。
使用这个伟大的命令从顶部投票的答案。 这将通过您的目录中的所有文件夹,并从git中删除这些文件。
find . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch
把gitignore推到Github上
最后一步,你需要实际提交你的.gitignore文件。
git status
git add .gitignore
git commit -m '.DS_Store banished!'
这将工作:
find . -name *.DS_Store -type f -exec git-rm {} \;
有几个解决scheme来解决这个问题。 为避免创build.DS_Store文件,请勿使用OS X Finder查看文件夹。 查看文件夹的另一种方法是使用UNIX命令行。 要删除.DS_Store文件,可以使用名为DS_Store Terminator的第三方产品。 要从整个系统中删除.DS_Store文件,可以使用UNIX shell命令。 从应用程序启动terminal:实用程序在UNIX shell提示符处,input以下UNIX命令:sudo find / -name“.DS_Store”-depth -exec rm {} \; 当系统提示input密码时,请inputMac OS Xpipe理员密码。
该命令是通过整个机器从文件系统的根(/)开始查找和删除所有.DS_Store事件。 要将此命令configuration为按计划任务运行,请按照以下步骤操作:从应用程序:实用程序启动terminal在UNIX shell提示符处,input以下UNIX命令:
sudo crontab -e当提示input密码时,请inputMac OS Xpipe理员密码。 一旦在vi编辑器中按一下键盘上的字母I并input以下内容:
15 1 * * * rootfind/ -name“.DS_Store”-depth -exec rm {} \;
这被称为crontab项,它具有以下格式:
分钟小时DayOfMonth Month DayOfWeek用户命令。
crontab条目意味着命令将由系统每天凌晨1点15分由root帐户自动执行。
该命令从find一路开始。 如果系统没有运行,这个命令不会被执行。
要保存input,按Esc键一次,然后同时按下Shift + z + z。
注意:步骤4中的信息仅适用于vi编辑器。
由于某种原因,以上都没有在我的Mac上工作。
我的解决scheme是从terminal运行
rm .DS_Store
然后
git pull origin master
初始化你的仓库时,跳过包含的git命令
-u
这不应该是一个问题。
这对我来说,从上面的两个答案组合:
- $ git rm –cached -f * .DS_Store
- $ git commit -m“filter-branch –index-filter'git rm –cached –ignore-unmatch .DS_Store”
- $ git push origin master –force
$ git commit -m "filter-branch --index-filter 'git rm --cached --ignore-unmatch .DS_Store" $ git push origin master --force
将此添加到您的文件.gitignore
#Ignore folder mac .DS_Store
保存并提交
git add -A git commit -m "ignore .DS_Store"
现在你忽略了所有的提交