2012-12-04 31 views
5

我有我的存储库中的文件.gitattributes看起来像这样.gitattributes与core.autocrlf未设置

* text=auto 
*.txt text 

我在仓库中,全局和系统设置未设置core.autocrlf。根据gitattributes的文档,我的理解是,存储库中名称以.txt结尾的所有文件都应该使用本机行结尾进行检出。但是,我所看到的是,.txt文件始终具有换行结尾的LF,即使在Windows上也是如此。鉴于这种配置,为什么不在Windows上结束CRLF?

+0

我以为你的第二行被击败,在这种情况下,你应该换行。我看到有人说,你不能在.gitattributes中设置一些东西,在你的例子中你已经设置了* .txt文件在第一行显示为text = auto。 – sabgenton

+0

@sabgenton,来自[手册页](http://www.kernel.org/pub/software/scm/git/docs/gitattributes.html),“当多个模式匹配路径时,后面的一行覆盖更早的行,这个重写是按属性完成的。“另外,您可能想参考下面我的答案中的链接。 – cleek

+0

[git line endings:renormalize似乎没有检出正确的结束符]的可能重复(http://stackoverflow.com/questions/13531988/git-line-endings-renormalize-does-not-seem-to-checkout - 右行结尾) –

回答

12

问题是在处理core.eol中存在一个错误。 gitattributes的文档说,如果未设置,那么将使用native,默认为系统的适当行结尾(CRLF for Windows,unix的LF),但是不要将core.eol设置为未设置,或将其设置为本机系统总是以LF结束行结束。那么答案就是明确地将core.eol设置为在Windows上的crlf。在http://adaptivepatchwork.com/2012/03/01/mind-the-end-of-your-line/的意见让我回答这个问题。

+2

谢谢你确认这一点,我以为我疯了一会儿。我已经提交了[一个错误](http://github.com/msysgit/msysgit/issues/97)。 – bricelam

+0

@Brice:感谢您记录该错误。我刚刚发布了同样的问题。 –

+0

我是在问这里之后发表评论的人 - 查看[这里]的回答(http://stackoverflow.com/a/13552603/281545)以获得错误报告/修复的链接。真的很高兴它吸引了一些注意这是非常恼人的:) –

-3

你需要设置core.autocrlf来输入。在Windows上将其设置为true。

如果您不共享x平台,那么将其设置为false,并完全忽略这些属性。

+0

第二行不良建议。您不知道您是否会决定在以后与x平台共享,因此从头开始配置它是明智的。 – orad