我试图让git不改变任何操作的任何行结尾.不幸的是,似乎这样做并不重要.我已将其缩减为以下测试用例,该测试用例具有尽可能多的不同机制来禁用此行为.
git config --global core.autocrlf falsegit config --global core.eol crlf以防万一)git init --shared(然后取消隐藏创建的.git目录).gitignore在存储库中创建一个新文件.gitattributes使用单行在存储库中创建一个新文件:* -textgit add .,然后git commit -m "initial commit"解决,例如这个.git branch master_recvdocument.txt在包含CRLF的存储库中创建一个新文件git add -A那么git commit -m "<something>"document.txt仍然包含CRLF(并删除它并重置并--hard返回仍然使用CRLF的版本)new file包含CRLF 的新文件git add -A那么git commit -m "<something>"document.txt和B new file都仍包含CRLFgit pull <remote> master:master_recvdocument.txt已经改为LF.添加的文件new file还包含LF.如果B是Windows计算机,则不会发生此问题.
Gen*_*ene 62
在项目中,应该有一个.gitattributes文件.大多数时候,它应该是这样的:

将*text = auto更改为*text = false.
像这样:
如果您的项目没有.gitattributes文件,则行结尾由您的git配置设置.要更改您的git配置,请执行以下操作:
转到此目录中的配置文件:
1)C:\ ProgramData\Git\config
2)在Notepad ++(或您喜欢的任何文本编辑器)中打开配置文件
3)将"autocrlf ="更改为false.
Von*_*onC 31
一个简单的解决方案是
git config --global core.autocrlf false如果有自动完成转换,则意味着回购中存在.gitattributes core.eol指令.
Max*_*Max 11
以下是对单个 repo 执行此操作的方法。
.gitattributes在 repo 的根目录中创建包含这一行的文件
* -text
Run Code Online (Sandbox Code Playgroud)
就是这样。这是一个匹配所有文件的通配符,告诉 git 取消设置 text 属性。这意味着 git 将所有文件视为二进制文件,因此不会执行任何行尾转换。
我想到了.似乎SCP计划正在转换行结尾.当我故意制作一个带有LF结尾的文件然后观察它在下载时显示为CRLF时,我注意到了这一点.
由于这是我的解决方案,我接受了这个答案,但未来的人也应该参考其他答案以获得更通用的解决方案.
来自gitattributes(5) 手册页“效果”主题
text此属性启用并控制行尾规范化。对文本文件进行规范化后,其行尾将在存储库中转换为 LF。要控制在工作目录中使用的行结束样式,请
eol对单个文件使用属性,core.eol对所有文本文件使用配置变量。
Set在路径上设置 text 属性可启用行尾规范化并将路径标记为文本文件。行尾转换无需猜测内容类型即可进行。
Unset取消设置路径上的 text 属性会告诉 Git 在签入或签出时不要尝试任何行尾转换。
core.autocrlf在新的 (1.7.2+) Git 中未使用,core.eol正确设置|取消文本属性被认为是更可靠的方法
| 归档时间: |
|
| 查看次数: |
47355 次 |
| 最近记录: |