我正在Linux上检查第三方项目"libjpeg",该项目位于https://github.com/winlibs/libjpeg(这只是一个例子,实际上我在许多其他项目中也遇到了同样的问题)。我有以下Git行尾配置。
我只配置了全局设置(设置为使用LF行尾进行检出):
我只配置了全局设置(设置为使用LF行尾进行检出):
$ git config --system -l | grep core
core.eol=lf
core.autocrlf=false
$ git config --global -l | grep core
core.eol=lf
core.autocrlf=false
关于行尾的本地(repo)设置是不存在的。
我读了一篇有关Git行尾配置的文章:https://adaptivepatchwork.com/2012/03/01/mind-the-end-of-your-line,我认为我的配置应该在Linux上给我所有文本文件提供LF。然而它并不起作用。在我的工作区中,我得到的是CRLF。例如:
Original Answer翻译成"最初的回答"
~/gitclonetest/libjpeg$ file libjpeg.map
libjpeg.map: ASCII text, with CRLF line terminators
~/gitclonetest/libjpeg$ cat -v libjpeg.map
LIBJPEG_9.0 {^M
global:^M
*;^M
};^M
能有人帮我理解我错过了什么吗?我的目标是在Linux主机上克隆任何项目时,自动将所有文本文件转换为LF。
更新:目标是配置Git,在Linux主机上检出LF,即使文件在存储库中以CRLF存储。
最初的回答:
text eol=lf
的.gitattributes
文件来处理那些特定的文件。但是影响会导致每次新提交时,存储在仓库中的文件将只使用LF行结尾,这与以CRLF行结尾将文件放入仓库的人的愿望相悖。在这种情况下,没有任何必要让Git执行此操作:您可以提取所有文件,将它们全部转换一次并进行提交。实质上,您在声明先前的仓库维护者是错误的。[续] - torek