我在Windows上。我已将core.eol
设置为native
。我已将core.autocrlf
设置为false
。我很确定我开始使用包含CRLF行结尾的文件,所有文件都是.clj
,.md
或.gitignore
之一。我承诺了。然后在下一次提交中,我提交了以下.gitattributes
* text=auto
*.bat text
*.bib text
*.clj text
*.java text
*.md text
*.tex text
*.txt text
*.jpg binary
*.pdf binary
*.png binary
在该提交中,diff表示每个文件的每一行都改变了(我假设的行结尾)。
将core.eol
设置为native
后,我想我会在我的工作树中获得CRLF,但事实并非如此(仅适用于.gitattributes
文件,没有其他文件,包括.gitignore
)。我之前没有注意到,因为我正在使用Vim。
我认为gitattributes提交的差异看起来很难看,所以我尝试为core.autocrlf
和core.eol
设置不同的值,例如分别设置为true
和crlf
并且正在做git filter-branch --tree-filter HEAD
。我收到错误error: core.autocrlf=input conflicts with core.eol=crlf
。我使用git config --get core.autocrlf
进行了检查,并返回了true
。那么为什么我会收到错误?
我很困惑。我想要的是我的工作树中的CRLF行结尾,以及不改变我的行结尾的提交,即从一开始就提交时它们是LF,并保持这种状态。我怎样才能做到这一点?
答案 0 :(得分:2)
我也在Windows上。我用Git。我的选择编辑是 Notepad2
通过此设置,我将Notepad2中的默认行结尾更改为LF
。就像你一样
can see
我没有必要改变Git EOL设置。
现在本地和远程我的文件都使用LF
,感觉很简单。
答案 1 :(得分:1)
.gitattributes
文件的第一行:
* text=auto
基本上忽略了core.autocrlf
的设置,并为您的存储库的所有用户(包括您自己)启用了行结束转换。
如果您不想进行自动行结束转换,则不应在.gitattributes
文件中使用该设置。
有关详细信息,请参阅Dealing with line endings和gitattributes Manual Page。