我应该总是排除 git LFS 文件的文本属性吗?

C0D*_*F52 5 git gitattributes git-lfs

网上有很多文章说将二进制文件放在 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
Run Code Online (Sandbox Code Playgroud)

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

现在,假设我想跟踪一些扩展*.yaml名为 LFS 的文本文件,因为它们非常大但仍然基于文本。我应该以与二进制条目相同的方式创建条目还是应该-text像这样省略?

*.yaml filter=lfs diff=lfs merge=lfs
*.YAML filter=lfs diff=lfs merge=lfs
Run Code Online (Sandbox Code Playgroud)

bk2*_*204 6

是的,您总是希望text使用 Git LFS排除文件的属性。原因是您不希望存储在存储库中的指针文件受到行尾转换或编码更改的影响,因为这会使它们无效,您也不希望大文件如此,因为这会使散列更改,因此底层指针文件也更改。该text属性控制这些方面,因此应该禁用它。


Rob*_*bar 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
Run Code Online (Sandbox Code Playgroud)

省略 -text 将使用您在 .gitattributes 文件中设置的默认值。所以在我看来最好离开-text

请参阅https://git-scm.com/docs/gitattributes#_end_of_line_conversion