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

Avilas

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


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

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

  1. 打开终端,然后导航到您想要清除 .DS_Store 文件的 git repo 目录
  2. 输入以下命令字符串:
  3. 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 文件。

有关的:LNK 文件:什么是 .lnk 文件以及如何在 Mac 上打开 .lnk 文件