首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >忽略git属性的WSL git EOL配置?

忽略git属性的WSL git EOL配置?
EN

Stack Overflow用户
提问于 2018-06-28 15:21:30
回答 1查看 1.2K关注 0票数 1

我正在使用Linux git的Windows子系统(2.17.1版本)来管理我的Windows膝上型计算机上的存储库,但它让我对行尾设置感到头疼。

上下文

根据我对git中的EOL管理的了解(如果我错了,请纠正我的错误),有两个关键的方面可以管理这一点:

  • .gitconfig,其中core.autocrlfcore.eol设置了通用策略
  • .gitattributes,在这里我可以指定每个路径的eoltext属性.

this question中,我了解到设置core.autocrlf = true等同于设置core.eol = crlf并将text=auto属性添加到每个文件;eol=属性覆盖core.eol配置。

在此之后,我设置了一个小测试,以确定我需要哪些选项。

我想要得到的和我尝试过的

在我的存储库中,我将有一些文件仅在Windows端使用,有些文件仅在UNIX机器上使用,而源代码则将由两者使用。为了避免麻烦,我想把所有的文件都设置为总是有CRLF,同时在提交时将所有其他文件都转换为LF。

为了做到这一点,我想我应该在.gitattributes中设置行*.vcxproj eol=crlf text并完成它。为了更好的衡量,为了安全起见,我还想添加*.sh eol=lf text。最后,我想出了一个小测试,看看它是否真的有效(剧透:它不起作用)。

测试设置

我的目录树如下所示:

代码语言:javascript
运行
复制
root_dir/
    - real.sh       (has LF EOL)
    - real.vcxproj  (has CRLF EOL)
    - fake.sh       (has CRLF EOL)
    - fake.vcxproj  (has LF EOL)

real.*文件的类型为“正确”的EOL,fake.*有另一个。其目的是检查哪些文件在warning git add-ing到存储库时引发-ing。

git config -l显示:

代码语言:javascript
运行
复制
core.repositoryformatversion=0
core.filemode=false
core.bare=false
core.logallrefupdates=true
core.ignorecase=true

理想情况下,如果一切都像我所理解的那样工作,那么“假”文件就会引发正在转换为相反类型的警告。

相反,所发生的是:

代码语言:javascript
运行
复制
$ git add -A
warning: CRLF will be replaced by LF in fake.sh.
The file will have its original line endings in your working directory.
warning: CRLF will be replaced by LF in real.vcxproj.
The file will have its original line endings in your working directory.

为了理解发生这种情况的原因,转换似乎选择了core.eol配置(在UNIX系统上默认为LF ),并忽略了我在.gitattributes中指定的内容。为了验证这一假设,我设置了core.eol = crlf,重新设置索引,然后再次进行git add -A,这次获得:

代码语言:javascript
运行
复制
$ git add -A
warning: LF will be replaced by CRLF in fake.vcxproj.
The file will have its original line endings in your working directory.
warning: LF will be replaced by CRLF in real.sh.
The file will have its original line endings in your working directory.

假设得到证实,头痛增加。为什么我的eol=...属性被忽略了?是否有一种方法可以根据每个文件类型配置自动转换?如果是这样的话,是怎么做的?

EN

回答 1

Stack Overflow用户

发布于 2018-07-03 12:16:46

经过进一步的测试,一些不可见字符似乎最终出现在我的.gitattributes文件中,从而破坏了eol=...属性。通过cat "..." > .gitattributes生成文件解决了问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51086499

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档