2011-12-01 92 views
0

我在ubuntu上使用git并将autocrlf设置为true。我的编辑器被配置为使用LF作为行尾字符。我编辑的文件,并没有git试图将ubuntu中的LF转换为CRLF并将core.autocrlf设置为true

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),为什么混帐会想我的LF转换在我的文件转换成CRLF?只有当你的文件包含CRLF,并且只有那么git会尝试将CRLF转换为LF时,它应该如何工作?

至于(2),这是否意味着我正在看的文件将仍然只与LF但git的暂存区域中的快照转换?

回答

1

通过查看警告消息,我猜你的配置如下:

  • 你(在git的1.7.2默认以上)使用窗户core.eol设置为native或已明确设置核心.eol到crlf
  • 你core.autocrlf设置为input

这些git attributescore.autocrlfcore.eol让利你配置你想要的行结束和他们可能的值,他们的意思是在git手册页捕获和this stackoverflow answer

而对(1)和(2)的答案,你的问题是,“因为你配置它是这样的“

你应该做什么取决于你在哪个平台上,以及你会从哪个平台访问git。建议让git仅存储LF作为行尾,因为生成的blob散列值会发生改变,否则git会抱怨“更改行”,即使更改可能只是行结束字符。

既然你是在Ubuntu,你想设置core.eollfcore.autocrlfinput让Git并不LF转换为CRLF在你的工作树。

+0

不,我正在使用Ubuntu的。我确定core.autocrlf的配置是正确的。 – Shawn

+0

如果你在Ubuntu上,忘记所有其他的东西,并将core.autocrlf输入。也就是说,如果没有其他人在Windows上使用它。 –

0

如果您没有进行跨平台开发(尤其是Windows),请将autocrlf设置为false,并让您使用的人也做同样的事情。在git中将它们制作成对象之前,不需要更改文件。这是一个巨大的麻烦。我在使用git的4年中从未处理过这个问题。除非你在使用Windows的x-platform ,否则设置为false。轻松修复。

相关问题