如何从 Git 存储库中删除DS_Store文件

如何从 Git 存储库中删除DS_Store文件

如果您在 Mac 平台上使用 git,您可能会在 git 存储库中遇到DS_Store文件。这些可能很烦人,并且使 git 存储库混乱,由于 git 存储库中维护.DS_Store文件,您甚至可能会遇到不必要的冲突,您可能会看到错误消息,例如“文件.DS_Store和.DS_Store有树冲突”。由于绝大多数 git 存储库不需要.DS_Store文件,并且通常只会导致问题,因此想要从 git 存储库中删除.DS_Store文件是合理的。


首先,如果您首先想知道DS_Store文件是什么,它基本上是一个包含 Mac 上特定于文件夹的元数据的文件。因此,.DS_Store文件包括从有关视图类型、文件/文件夹大小、缩略图信息、文件夹布局的元数据以及 Mac 上特定文件夹的任何 Finder 级别自定义的所有内容。 由于.DS_Store文件都以 .在文件名中,它们对 Finder 不可见(有效地使它们成为隐藏文件),但将显示在命令行中,并且使用命令行工具或存储库管理器(如 git)默认包含目录中的每个文件,包括隐藏文件。

虽然.DS_Store文件显然对 Finder 有用,但它们对于 git 存储库没有用。让我们回顾一下如何从 git 存储库中删除所有DS_Store文件,以及如何防止存储在未来的 git 存储库中。

如何从 Git 存储库中删除现有的.DS_Store文件

    1. 打开终端,然后导航到要清除.DS_Store文件的 git 存储库目录
    2. 输入以下命令字符串:

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

这将找到.DS_Store文件并将其删除。

如果您想走得更远,您实际上可以使用 find 命令的另一种变体从 Mac 中删除所有DS_Store文件,但请注意,这样做您将丢失任何和所有 Finder 窗口和文件夹自定义,因此不特别建议走这条路。

如何在 git 中忽略.DS_Store文件

现在让我们更进一步,首先阻止 git 维护和提交DS_Store文件,而是完全忽略它们。这是通过在活动存储库目录中修改(或创建).gitignore 文件来完成的:

echo .DS_Store >> .gitignore

现在,您需要将 .gitignore 文件添加到存储库,并提交更改。

git add .gitignore

git commit -m 'Ignoring .DS_Store Files'

就其价值而言,不仅仅是 git 会遇到.DS_Store文件创建或混乱的问题,或者可能从忽略它们中受益,您还可以从 Mac 上创建的 zip 存档中排除DS_Store文件,这有助于减少混乱(并防止特定于机器的元数据)保存在 zip 文件中。您可能会发现.DS_Store文件对网络环境令人讨厌,但如果需要,默认命令可能会阻止为网络卷创建DS_Store文件。

正文完