core.autocrlf
和core.eol
。core.autocrlf = true
来处理跨平台项目,但现在不再需要了。
如果你的系统/IDE/工具支持LF
,并且你希望像团队中的其他人一样使用LF
,而不要有任何隐式的lf-> crlf-> lf
规范化,则必须关闭autocrlf
并将eol
配置为不推断本机行尾,并强制使用lf
。LF
:
.gitattributes
文件针对每个存储库进行设置。此文件会覆盖克隆存储库的任何本地配置。进入你的工作目录(即本地存储库):
首先将所有更改提交。
设置全局和存储库的配置。以防万一。
git config --global core.eol lf
git config --global core.autocrlf false
git config core.eol lf
git config core.autocrlf false
删除所有“代码”内容,保留.git
。
您还可以省略依赖项、已安装文件(如node_modules
)、生成文件以及任何被Git忽略的文件。
最后运行
git reset --hard HEAD
现在应该可以正常工作了。新检查的文件应该遵循新的配置,并保留从远程仓库克隆的任何行末标识符。
请注意,如果您的远程仓库使用混合的crlf
和lf
结尾,您还需要运行并推送更改。
git add --renormalize .
.gitattributes
文件设置每个存储库在你的工作目录(本地仓库)中:
在根目录下创建.gitattributes
文件,将以下内容添加进去:
* text=auto eol=lf
提交文件(以及其他所有文件)
与上述操作相同
与上述操作相同
重要提示:将文件引入存储库后,每个仍使用旧CRLF文件的人都需要执行步骤3和4以更新其工作目录,因为仅检出提交不会影响已存在的文件。
设置core.autocrlf
为true
或input
可以覆盖core.eol
https://www.git-scm.com/docs/git-config#Documentation/git-config.txt-coreautocrlf
core.autocrlf=input
是Unix系统上的首选值。
https://dev59.com/BXA75IYBdhLWcg3wm6Uj#41282375
https://dev59.com/BXA75IYBdhLWcg3wm6Uj#4425433
以第三个选项(与Q中的屏幕截图相同)重新安装Windows版git
检出原样-提交原样(
core.autocrlf=false
)
.gitattributes
来给Git提供指导。* text=auto eol=lf
.editorconfig
仅用于保存支持它的编辑器的文件...git add --renormalize .
您可能会发现这个答案有用:https://dev59.com/kWUo5IYBdhLWcg3w9TTb#50645024
CRLF
。是的,我在谈论支持 LF
的 IDE 和工具,因此需要 .editorconfig
。从我的学习中得知,.gitattributes
可能会相当复杂,你需要调整某些扩展名。无论如何,要使用 .gitattributes
,你仍然需要确保每个开发者的 git 安装正确设置,因此我认为另一种解决方案更直接,需要更少的工作和进一步的维护。 - Qwerty.editorconfig
不是解决方案。是的,.gitattributes
是现在的好解决方案,因为它不需要所有开发人员正确配置他们的git。你读过Edward Thomson的帖子吗?不,你的解决方案并不是最直接的,因为有时候开发人员会提交错误的eol... - Philippe.gitattributes
覆盖了 core.autocrlf
,这是事实。请确保正确使用并将其提交到您的代码库中,这样无论 core.autocrlf
或 core.eol
设置为什么都不会有影响。这就是 .gitattributes
的作用所在。 - Edward ThomsonLF
,我不需要运行规范化。您能否确认要使.gitattributes
生效,必须将本地git配置设置为core.autocrlf=false
? - Qwertycore.autocrlf
设置为什么,.gitattributes
都会覆盖它。如果你为一个文件配置了.gitattributes
,那么core.autocrlf
将被忽略。 - Edward Thomson