我应该始终排除git LFS文件的文本属性吗?

12

网络上有很多文章说将二进制文件放在LFS下是一种好的实践。因此,.gitattributes文件看起来像这样:

## Fonts
*.otf filter=lfs diff=lfs merge=lfs -text
*.OTF filter=lfs diff=lfs merge=lfs -text
*.ttf filter=lfs diff=lfs merge=lfs -text
*.TTF filter=lfs diff=lfs merge=lfs -text

请注意,所有的条目都包含-text,这告诉 git 不将这些文件视为文本文件,而是将它们视为二进制文件。

现在,假设我想跟踪一些扩展名为*.yaml的文本文件,并将它们作为 LFS 存储,因为它们非常大但仍然基于文本。我应该像对待二进制文件一样创建条目,还是应该省略-text呢?

*.yaml filter=lfs diff=lfs merge=lfs
*.YAML filter=lfs diff=lfs merge=lfs
2个回答

14

在使用Git LFS时,您始终希望排除文件的 text 属性。原因是,您不想将存储在代码库中的指针文件受到换行符或编码更改的影响,因为这会使它们无效,同时您也不希望大文件出现此类情况,因为这会导致哈希值的变化,从而也会改变底层指针文件。 text 属性控制这些方面,因此应将其禁用。


6
FYI -text 表示取消文本属性,即:
# Treat *.otf as **not** text
*.otf filter=lfs diff=lfs merge=lfs -text
# Treat *.otf as text
*.otf filter=lfs diff=lfs merge=lfs text

留出-text将会使用在.gitattributes文件中设置的默认选项。所以我认为最好留下-text。
请参考https://git-scm.com/docs/gitattributes#_end_of_line_conversion

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接