我在ubuntu上使用git,autocrlf设置为true。我的编辑器配置为使用LF作为行尾字符。我编辑了一个文件后做了
git add .
我得到了:
warning: LF will be replaced by CRLF in file1.txt. (1)
The file will have its original line endings in your working directory. (2)
至于(1),为什么git想要将我文件中的LF转换成CRLF?只有当你的文件包含CRLF并且git才会尝试将CRLF转换为LF时,它是否应该完全正常工作?
对于(2),这是否意味着我正在查看的文件仍将仅使用LF,但git的暂存区域中的快照是否已转换?
答案 0 :(得分:1)
通过查看警告消息,我猜您的配置如下:
core.eol
设置为native
的窗口(默认情况下为git 1.7.2及更高版本)或已明确将core.eol设置为crlf
input
这些git attributes
,core.autocrlf
和core.eol
可让您配置所需的行结尾及其可能的值以及它们在git手册页和{{3}中捕获的含义}
对于(1)和(2)的答案,你的问题是,“因为你这样配置了”
你应该做什么取决于你所处的平台,以及你将从哪个平台访问git。建议让git只存储LF
作为行尾,因为生成的blob哈希会改变,否则git会抱怨“更改的行”,即使你的更改可能只是行结束字符。 / p>
由于您使用的是Ubuntu,因此您希望将core.eol
设置为lf
并将core.autocrlf
设置为input
,以便git不会将LF转换为工作树中的CRLF。
答案 1 :(得分:0)
如果您没有进行跨平台开发(特别是使用Windows),请将autocrlf设置为false并让与您合作的人员也这样做。在将文件制作成git中的对象之前,无需更改文件。这是一个巨大的麻烦。我在使用git 4年后再也没有处理过这个问题。除非您使用Windows 进行x-platform ,否则设置为false。轻松修复。