大部分.gitattributes文件都有* text=auto.text=auto该文件的目的是什么?
我创建了一个包含在git存储库中的文件的默认版本.重要的是,当某人克隆存储库时,他们会获得此文件的副本.但是,我想设置git,以便稍后忽略对此文件的更改. .gitignore仅适用于未跟踪的文件.
我的动机是这个文件包含机器特定的信息.我想提供默认值,同时允许人们进行不会被推回原始存储库的本地更改,从而在我们提取新更改时创建合并冲突.
我们通常非常懒惰并且使用git add .很多,所以我很确定如果我不能告诉git忽略这个文件,对它的更改将最终得到提交和推送.
总结一下,
default_values.txt添加到我的git存储库,并在有人克隆该存储库时包含该文件.git add .不应该添加default_values.txt到提交.正如人们可以从 其他 帖子中收集的那样,Git的终端规范化有其优点和缺点.我有一个特定的Windows项目,我认为最好的办法是完全禁用行尾规范化.也就是说,我希望保留所有换行符(大部分都是CRLF完整的),而不是让git将它们规范化为 - LF仅在幕后,我希望该更改能够影响所有计算机上存储库的所有克隆.问题是最有效的方法.
大多数关于Git行尾规范化的讨论都是根据core.autocrlf,我可以通过设置来实现我的目标core.autocrlf=false.但是,这是一个git-config设置,我相信必须在每台机器上分别设置它.如果为true,那似乎容易出错,特别是因为msysgit安装程序会将其引导到设置中core.autocrlf=true.
我克隆了一个存在不一致行结尾的存储库.我添加了一个.gitattributes为我想要规范化的文件设置text属性.现在,当我提交更改时,我收到消息:
warning: CRLF will be replaced by LF in FILE.
The file will have its original line endings in your working directory.
Run Code Online (Sandbox Code Playgroud)
如何让git为我标准化我的文件的工作副本?我希望git能够规范化整个工作树.
我们在.gitattributes文件中有这个:
* text=auto eol=lf
Run Code Online (Sandbox Code Playgroud)
我想准确理解这是做什么的.
第一部分是text=auto.从文档:
这确保了Git认为是文本的所有文件都将在存储库中具有规范化(LF)行结尾.
重要的是,Git仅针对它检测为文本文件的文件进行规范化.
但是,我不确定这个eol=lf部分.我认为它也将仅对文本文件进行规范化,但我在文档中找不到对它的支持,并且当我们的PNG文件也被标准化时我们有一个实例,使它们无效.
是否有像上面这样的设置基本上会说"在文本文件的两个方向上进行规范化,并单独保留二进制文件"?
我想描述一个属性文件添加到我的Git仓库在这里.它表明我应该包含.gitattributes在我的存储库的根文件夹中.
是.gitattributes一种简单的文件还是文件夹?如何创建此文件/文件夹?
Windows引发以下错误:
"无法创建没有文件名的文件"
"你必须输入文件名"
应该在哪里添加文件?在存储库根目录下,X:\PATH\TO\Repository\还是Git文件夹下,X:\PATH\TO\Repository\.git\?
是否会为其他贡献者强制执行克隆/分配我的存储库的属性?
例如,如果我推送到GitHub或GitLab并且其他一方下拉了副本,那么我添加的属性也会在他们的机器上执行吗?
相关: Git Ignore
注意:如果有帮助,我在Windows平台上使用TortoiseGit和msysgit.
免责声明:Git,我的意思是'我'搞砸了.
此前,我想git-gui给我看diff的这它认为是二进制文件.
所以我对我做了一些改动 .\.gitattributes
*.ini text
*.inc text
Run Code Online (Sandbox Code Playgroud)
但它没有用. 然后,我做了一些改变,以我的.\.git\info\attributes
*.ini text
*.inc text
*.inc crlf diff
*.ini crlf diff
Run Code Online (Sandbox Code Playgroud)
它起作用了.
但现在当我回到之前的承诺时,它会搞砸......
它应该是这样的:

它不会发生在所有文件中.编辑:它只发生在其中包含任何特殊字符的文件中.
问:这是提交本身的问题还是只是一些设置?
问:我能恢复吗?
最近我在.gitattributes文件中遇到了以下条目:
"* text=auto !eol"
怎么!eol办?
是否可以在.gitattributes文件中添加注释或备注?
如果是,注释行的确如何?
git ×10
gitattributes ×10
line-endings ×2
comments ×1
eol ×1
newline ×1
path ×1
unicode ×1
unix ×1