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

时间:2013-08-23 02:01:07

标签: gitignore

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

我该如何解决这个问题?

11 个答案:

答案 0 :(得分:545)

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

您必须手动删除已添加到存储库的.DS_Store文件。您可以使用git rm --cached .DS_Store。删除后,git应该忽略它。您应该只需要根.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

此页面帮助我回答了您的问题:https://help.github.com/articles/ignoring-files

答案 1 :(得分:287)

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


如果.DS_Store已经提交:

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

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

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

答案 2 :(得分:80)

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

# Ignore Mac DS_Store files
.DS_Store

只要您不包含斜杠,它就会与所有目录中的文件名匹配。 (来自here

答案 3 :(得分:69)

如果.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文件中,然后再次提交并推送最后两段代码(git commit ...,git push ...)

答案 4 :(得分:20)

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

git rm -f *.DS_Store

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

*.DS_Store
.DS_Store

到.gitignore。这对我有用!

答案 5 :(得分:15)

只需将其放在.gitignore

的新行中
**/.DS_Store

来自git documentation

  • 前导“ **”后跟斜杠表示在所有目录中均匹配。例如,“ ** / foo”与文件“ foo”在任何位置都匹配文件或目录“ foo”。 “ ** / foo / bar”与文件或目录“ bar”匹配,直接位于目录“ foo”下。

答案 6 :(得分:11)

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

答案 7 :(得分:9)

*.DS_Store添加到.gitignore文件中。这对我很有用

答案 8 :(得分:5)

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

找到。 -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch

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

步骤:3)在.gitignore中提交您的更改     git add .gitignore     git commit -m“已删除.DS_Store”

答案 9 :(得分:1)

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

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

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

答案 10 :(得分:0)

  1. $ git rm ./*.DS_Store-从git中删除所有.DS_Store
  2. $ echo \.DS_Store >> .gitignore-以后忽略.DS_Store

提交并推送