Fiz*_*han 122 git gitattributes
大部分.gitattributes文件都有* text=auto.text=auto该文件的目的是什么?
Fli*_*imm 67
来自文档:
.gitattributes(或.git/info/attributes)文件中的每一行都是以下形式:Run Code Online (Sandbox Code Playgroud)pattern attr1 attr2 ...
所以在这里,模式是*,这意味着所有文件,属性是text=auto.
怎么text=auto办?从文档:
当文本设置为"auto"时,路径将标记为自动行结束标准化.如果Git决定内容是文本,则其行结尾在签入时标准化为LF.
如果没有启用,默认行为是什么?
不明
如果未指定text属性,Git将使用core.autocrlf配置变量来确定是否应转换该文件.
怎么core.autocrlf办?来自文档:
Run Code Online (Sandbox Code Playgroud)core.autocrlf将此变量设置为"true"几乎与在所有文件上将text属性设置为"auto"几乎相同,只是不保证文本文件的规范化:不会触及存储库中包含CRLF的文件.如果要在工作目录中具有CRLF行结尾,请使用此设置,即使存储库没有标准化的行结尾.该变量可以设置为输入,在这种情况下不执行输出转换.
如果你认为这一切都像泥巴一样清晰,那么你并不孤单.
这就是* text=auto我的话:当有人提交文件时,Git猜测该文件是否是文本文件,如果是,它将提交文件的一个版本,其中所有CR + LF字节都用LF字节替换.它不会直接影响工作树中的文件外观,还有其他设置可以在签出文件时将LF字节转换为CR + LF字节.
我不建议* text=auto输入.gitattributes文件.相反,我会建议这样的事情:
*.txt text
*.html text
*.css text
*.js text
Run Code Online (Sandbox Code Playgroud)
这明确指定哪些文件是文本文件,这些文件在对象数据库中将CRLF转换为LF(但不一定在工作树中).我们有一个repo * text=auto,并且Git认为它是一个文本文件的图像文件是错误的,导致它破坏它,因为它在对象数据库中用LF字节替换了CR + LF字节.这不是一个有趣的调试.
如果必须使用* text=auto,请将其作为第一行.gitattributes,以便后面的行可以覆盖它.这似乎正在成为越来越受欢迎的做法.
Dav*_*ych 61
它确保线路结束标准化.资料来源:Kernel.org
当文本设置为"auto"时,路径将标记为自动行结束标准化.如果git决定内容是文本,则其行结尾在签入时标准化为LF.
如果要与强制执行行尾规范化的源代码管理系统进行互操作,或者只是希望对存储库中的所有文本文件进行规范化,则应将所有文件的text属性设置为"auto".
这确保了git认为是文本的所有文件都将在存储库中具有规范化(LF)行结尾.
该配置是关于如何处理行结尾的.启用后,所有行结尾都将转换为存储库中的LF.还有其他标志可以处理在工作目录中如何转换行结尾.关于这个问题的完整信息,请访问:https: //www.kernel.org/pub/software/scm/git/docs/gitattributes.html
| 归档时间: |
|
| 查看次数: |
35544 次 |
| 最近记录: |