.gitignore每个文件夹和子文件夹中的所有.DS_Store文件
我已经将.DS_Store添加到.gitignore文件,但它似乎只忽略根目录中的.DS_Store,而不是每个文件夹和子文件夹中。
我该如何解决?
我认为你遇到的问题是,在一些早期的提交中,你不小心将.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
find . -name .DS_Store -print0 | xargs -0 git rm --ignore-unmatch
find . -name .DS_Store -print0 | xargs -0 git rm --ignore-unmatch
从存储库中删除所有.DS_Stores
。
毡尖:因为你可能不想包含.DS_Store文件,所以要制定一个全局规则。 首先,在某个地方创build一个全局的.gitignore文件,例如echo .DS_Store >> ~/.gitignore_global
。 现在告诉git使用它的所有存储库: git config --global core.excludesfile ~/.gitignore_global
。
这个页面帮助我回答你的问题: https : //help.github.com/articles/ignoring-files
将**/.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
你的.gitignore文件应该是这样的:
# Ignore Mac DS_Store files .DS_Store
只要不包含斜杠,它就会与所有目录中的文件名相匹配。 (从这里 )
如果.DS_Store从未添加到您的git存储库,只需将其添加到.gitignore文件。
如果您没有,请创build一个名为的文件
.gitignore
在你的应用程序的根目录下,只需写入
**/.DS_Store
在里面。 这绝不会让.DS_Store文件偷偷在你的git中。
但是,如果它已经在那里,请在terminal上写下:
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 commit …,git push …)进行提交和推送。
步骤1,删除所有*.DS_store
文件。 一个可以运行
git rm -f *.DS_Store
但要注意,如果你有一个错字, rm -f
会有点危险! 第二步:添加
*.DS_Store .DS_Store
到.gitignore。 这对我有用!
您也可以将--cached
标志添加到auco的答案,以维护本地.DS_store文件,正如Edward Newell在其原始答复中所述。 修改后的命令如下所示: find . -name .DS_Store -print0 | xargs -0 git rm --cached --ignore-unmatch
find . -name .DS_Store -print0 | xargs -0 git rm --cached --ignore-unmatch
find . -name .DS_Store -print0 | xargs -0 git rm --cached --ignore-unmatch
unmatch ..cheers and thanks!
将*.DS_Store
添加到.gitignore文件中。 这对我来说是完美的
步骤:1)使用此命令删除现有的文件
找 。 -name .DS_Store -print0 | xargs -0 git rm -f –ignore-unmatch
步骤:2)在您的.gitignore文件中添加.DS_Store
步骤:3)在.gitignore提交你的修改git add .gitignore git commit -m“removed .DS_Store”