15

有人能帮我吗。我正在使用 Git (GitHub) 并试图决定*.sql在 gitattributes 中将我的文件设置为什么。我见过人们使用

*.sql diff=astextplain
*.sql diff
*.sql text=auto

有人建议我将其设置为第二个选项,但我只是想知道它与其他两个选项有什么区别。

4

1 回答 1

29

TL;博士

  • diff=astextplain(仅限msysGit):在生成它们的差异之前将这些文件(在它们的扩展名为*.doc, *.pdf,*.rtf等的条件下)转换为文本格式。
  • diff:将这些文件视为纯文本以生成它们的差异。
  • text=auto:自动将被 Git 视为文本文件的文件中的 EOL 字符(到 LF)标准化。

更多细节

diff=astextplain

字符串值astextplain不是 Git 核心的一部分:实际上,运行

git grep "astextplain"

Git 项目存储库中不返回任何内容。据我所知,它是msysGit附带的一个shell 脚本,允许您转换文件,例如

  • Word文档,
  • PDF格式,
  • RTF

在生成它们的差异之前转换为文本格式。

diff

根据gitattributes手册页

该属性diff影响 Git 如何为特定文件生成差异。[...]

设置属性的路径diff被视为文本,即使它们包含通常不会出现在文本文件中的字节值,例如 NUL。

text=auto

根据gitattributes手册页

text设置为“自动”时,路径被标记为自动行尾标准化。如果 Git 确定内容是文本,则在签入时将其行结尾规范化为 LF。

于 2015-01-26T10:31:05.990 回答