为什么不是’;t eol=crlf在.gittattributes中
所以我决定在我们的git repo中将所有具有windows样式的行结尾的文件转换为具有unix样式的行结尾 我按照以下指示行事: 我后来意识到,这也改变了*.bat文件,该文件应保留为CRLF。我使用以下为什么不是’;t eol=crlf在.gittattributes中,git,Git,所以我决定在我们的git repo中将所有具有windows样式的行结尾的文件转换为具有unix样式的行结尾 我按照以下指示行事: 我后来意识到,这也改变了*.bat文件,该文件应保留为CRLF。我使用以下.gittributes文件再次尝试了整个过程: # Default * text=auto eol=lf # Windows-only files *.bat text eol=crlf 这似乎没有改变git status的输出,批处理文件仍然标记为“已更改”,
.gittributes
文件再次尝试了整个过程:
# Default
* text=auto eol=lf
# Windows-only files
*.bat text eol=crlf
这似乎没有改变git status
的输出,批处理文件仍然标记为“已更改”,即使它们在我的工作副本中是CRLF,并且.gittributes
将它们设置为正是这样。git似乎会忽略带有*.bat
的行git show--raw
也向我显示了文件现在是用LF而不是CRLF存储的。经过几个小时的尝试(并且失败)找到了一个关于格式的好规范。gittattributes
我决定尝试以下方法(注意,这不是解决问题的正确方法):
瞧,批处理文件从git status
中消失了,这表明文件的语法没有问题,正如我最初假设的那样。虽然我不想将批处理文件视为二进制文件,但这让我得出了我现在认为是正确的结论:
我误解了git在使用text
属性标记文件时的实际操作。它始终在内部存储以LF行结尾的文件,并且仅在签出时转换为CRLF。所以,我最初的步骤是完全正确的,它们只是产生了让我困惑的输出,让我觉得有些事情不对。档案实际上已经改变了;以前它们是用CRLF存储的,但现在它们将只存储LF行结束符,这将在签出时更正
# Default
* text=auto eol=lf
# Windows-only files
*.bat text eol=crlf
*.bat -text