. gitignore所有的.DS_Store文件在每个文件夹和子文件夹

我在. gitignore文件中添加了.DS_Store,但它似乎只是忽略了根目录中的.DS_Store,而不是每个文件夹和子文件夹。

我该怎么解决这个问题?

417923 次浏览

我认为你遇到的问题是,在之前的一些提交中,你不小心将.DS_Store文件添加到存储库中。当然,一旦文件在你的存储库中被跟踪,即使它与适用的. gitignore文件中的条目匹配,它也会继续被跟踪。

您必须手动删除添加到存储库的.DS_Store文件。您可以使用

git rm --cached .DS_Store

删除后,git应该忽略它。您应该只需要在root.gitignore文件中使用以下行:.DS_Store。不要忘记句点!

git rm --cached .DS_Store

仅从当前目录中删除.DS_Store。您可以使用

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

从存储库中删除所有.DS_Stores

毛毡提示:由于您可能永远不想包含.DS_Store文件,因此制定一个全局规则。首先,在某处创建一个全局.gitignore文件,例如:

echo .DS_Store >> ~/.gitignore_global

现在告诉git将其用于所有存储库:

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

本页面帮助我回答了你的问题。

您还可以将--cached标志添加到auto的答案中以维护本地.DS_store文件,正如Edward Newell在他的原始答案中提到的那样。修改后的命令如下所示:find . -name .DS_Store -print0 | xargs -0 git rm --cached --ignore-unmatch…干杯和感谢!

**/.DS_Store添加到子目录的.gitignore


如果.DS_Store已经提交:

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

在所有存储库中忽略它们:(有时它被命名为._.DS_Store

echo ".DS_Store" >> ~/.gitignore_globalecho "._.DS_Store" >> ~/.gitignore_globalecho "**/.DS_Store" >> ~/.gitignore_globalecho "**/._.DS_Store" >> ~/.gitignore_globalgit config --global core.excludesfile ~/.gitignore_global

*.DS_Store添加到您的. gitignore文件中。这非常适合我

您的. gitignore文件应如下所示:

# Ignore Mac DS_Store files.DS_Store

只要不包含斜杠,它就会与所有目录中的文件名匹配。(从这里开始)

第1步,删除所有*.DS_store文件。一个可以运行

git rm -f *.DS_Store

但请注意,如果您有错别字,rm -f可能有点危险!第二步:添加

*.DS_Store.DS_Store

到. gitignore。这对我有用!

如果.DS_Store从未添加到您的git存储库中,只需将其添加到您的. gitignore文件中。

如果您没有,请创建一个名为

.gitignore

在您的应用程序的根目录中,只需编写

**/.DS_Store

这将永远不会允许.DS_Store文件潜入您的git。

但是,如果它已经存在,请在您的终端中写入:

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

然后提交并推送更改以从远程存储库中删除.DS_Store:

git commit -m "Remove .DS_Store from everywhere"
git push origin master

现在添加.DS_Store到您的. gitignore文件中,然后再次提交并使用最后2段代码推送(git提交…,git推送…)

步骤:1)使用此命令删除现有文件

DS_Store-print0|xargs-0 git rm-f--忽略不匹配

步骤:2)在. gitignore文件中添加DS_Store

步骤:3)在. gitignore中提交您的更改git add. gitignore使用说明#删除DS_Store

  1. $ git rm ./*.DS_Store-删除git中的所有DS_Store
  2. $ echo \.DS_Store >> .gitignore-忽略DS_Store将来

提交&推送

您应该在创建项目时添加以下行。它将始终忽略.DS_Store以推送到存储库。

*.DS_Store这将忽略。DS_Store代码提交。
git rm --cached .DS_Store这是删除.DS_Store文件从你的存储库,如果你需要它,你可以取消注释。

## ignore .DS_Store file.# git rm --cached .DS_Store*.DS_Store

只需将其放在.gitignore的新行上

**/.DS_Store

git留档

  • 前导“**”后跟斜杠表示在所有目录中匹配。例如,“**/foo”匹配任何地方的文件或目录“foo”,与模式“foo”相同。“**/foo/bar”匹配目录“foo”下的任何地方的文件或目录“bar”。

**/.DS_Store添加到您的.gitignore