如何从 Git 仓库中删除那些令人烦恼的 Mac OS X .DS_Store
文件?
以下是我从以上两个答案中结合起来的方法,对我有用:
在初始化您的存储库时,请跳过包含git命令的步骤。
-u
这不应该是一个问题。
touch .gitignore
创建一个.gitignore
文件,并在其中添加以下内容。.DS_Store
保存.gitignore
文件,然后将其推送到您的Git仓库。
$ 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"
如果.DS_Store从未添加到您的git存储库中,请将其添加到您的.gitignore文件中。
如果您没有一个,创建一个名为的文件
.gitignore
在你的应用的根目录中,只需写入
.DS_Store
._.DS_Store
**/.DS_Store
**/._.DS_Store
在其中。这将永远不允许.DS_Store文件悄悄进入你的git。
如果它已经存在,请在终端中写入:
find . -name .DS_Store -print0 | xargs -0 git rm -f --ignore-unmatch
git commit -m "Remove .DS_Store from everywhere"
git push origin master
find . -name .DS_Store -print0 | xargs -0 git rm --ignore-unmatch
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 文件,它可能在目录和子目录之间有一些规则组合,以便这些烦人的 .DS_Store 文件不仅在这些文件夹中被忽略。例如,您想忽略 gensrc 文件夹,除了在 custom 目录中的文件夹,那么您将拥有以下的 .gitignore 文件:
.DS_Store
gensrc
!custom/**
git config --global core.excludesfile "~/.gitignore" && echo .DS_Store >> ~/.gitignore