我可以安全地 gitignore “._” 前缀文件吗

Posted

技术标签:

【中文标题】我可以安全地 gitignore “._” 前缀文件吗【英文标题】:Can I safely gitignore "._" prefixed files 【发布时间】:2021-09-25 16:15:43 【问题描述】:

我正在开发一个在 Windows 和 Mac OS 上开发的 Unity 项目。 我在 repo 中得到了这些恼人的“._”前缀文件,当我从 mac os 端提交时,我可以安全地忽略这些文件(就像使用 DS_STOREs 一样)?

【问题讨论】:

【参考方案1】:

是的,忽略这些文件通常是安全的,尤其是在跨平台工作时。它们可以包含各种 Mac 特定的文件系统元数据;无论如何,您的 Windows 计算机都不知道如何处理该元数据,因此,如果您出于某种原因依赖它......无论是否保留它们,您在 Windows 方面都会不走运。

更详细地说:macOS 的首选卷格式 HFS+ 和 APFS 可以存储有关文件的各种元数据——查找器信息、标签、隔离状态等等。其中大部分存储为“扩展属性”或 xattrs,您可以在 macOS 命令行中使用ls -l@xattr -l 查看。但其他卷格式(以及 tar 和 zip 等存档格式)不支持所有这些扩展元数据,因此 Mac 文件系统将其存储在带有“._”前缀的单独文件中,"AppleDouble" format。

这些附加信息中的大部分并不是真正需要(有时甚至没有意义)在不同的 macOS 系统之间传输,并且 没有 对于 Windows 系统来说是有意义的。因此,在传输文件时,通常将其忽略是安全的。

(有关丢失元数据不安全的示例,请参阅this Q&A。它涉及一个 Finder 别名文件——有点像 symlimk,但不同——丢失了将其标识为别名的元数据,并因此变得无法使用。但是 Windows 无论如何都不理解 Finder 别名,所以你最好不要在你的项目中使用它们。)

顺便说一句,您有时会看到这些文件被称为包含“资源分叉”,但这并不完全正确。资源分叉是一种较旧类型的 Mac 特定元数据,几乎不再使用。如果您确实有任何带有资源分叉的文件,并将它们放在非 Mac 本地卷上,则资源分叉存储在“._”文件中(以及任何其他 xattrs),但你可能不知道,所以“._”文件根本不可能包含资源分叉。

【讨论】:

以上是关于我可以安全地 gitignore “._” 前缀文件吗的主要内容,如果未能解决你的问题,请参考以下文章

如何 gitignore 快照文件夹?

Eclipse Android 和 gitignore

如何在 C 中安全地声明 16 位字符串文字?

.gitignore文件内容格式规范介绍说明详解

(ICPC)亚洲区域赛上海 M.Gitignore(模拟,map)

.gitignore模板