diff和diff = astextplain有什么区别?

时间:2015-01-26 07:42:12

标签: git gitattributes

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

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

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

1 个答案:

答案 0 :(得分:18)

TL; DR

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

更多细节

diff=astextplain

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

git grep "astextplain"
Git project repository中的

不返回任何内容。据我所知,它是一个shell script附带msysGit并允许您转换文件,如

  • Word文档,
  • PDF,
  • RTF

生成差异之前的文本格式。

diff

根据gitattributes man page

  

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

     

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

text=auto

根据gitattributes man page

  

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