git diff和diff=astextplain之间的区别是什么?

qco9c6ql  于 2022-12-21  发布在  Git
关注(0)|答案(2)|浏览(280)

有人能帮帮我吗?我正在使用Git(GitHub),并试图决定在gitattributes中设置我的*.sql文件的内容。

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

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

f87krz0w

f87krz0w1#

TL;DR

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

更多详情

∮ ∮ ∮ ∮ diff=astextplain
字符串值astextplain不是Git core的一部分:事实上,跑步

git grep "astextplain"

Git project repository中什么也不返回。据我所知,它是msysGit附带的shell script,允许您转换文件,如

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

转换为文本格式,然后生成它们的diff。

一个月八个月

根据gitattributes man page
属性diff影响Git为特定文件生成差异的方式。[...]
设置了diff属性的路径被视为文本,即使它们包含通常不会出现在文本文件中的字节值(如NUL)也是如此。

text=auto

根据gitattributes man page
text被设置为“auto”时,路径被标记为自动行尾规范化,如果Git确定内容为文本,则在签入时行尾被规范化为LF。

cnwbcb6i

cnwbcb6i2#

已接受的答案已过时。msysGit已被Git for Windows 2.x取代。
在Git For Windows Wiki中,
git-extra软件包对MSYS 2环境进行了大量修改(有时候修改后的恢复会很麻烦)。如果你想保持MSYS 2的原始状态,可以跳过这个软件包。在撰写本文时,这个软件包:

  • 安装各种其他帮助程序:阻止文件实用程序,创建快捷方式,git-askyesno,git-credential-helper-selector,代理查找,WhoUses,astextplain,记事本,vi,写字板

astextplain是Git for Windows的git-extra包中的一个脚本,可以是read online

相关问题