git - 如何在 2020 年的 Git for Windows 中永久使用“LF”行尾?
问题描述
我们的存储库使用LF
,我的 Git for Windows 安装按原样使用 Checkout,提交 Unix 风格的行尾,
但是我仍然在我的 IDE 中签出的每个文件中都遇到错误,因为CRLF
即使它确实支持LF
并配置为LF
通过签入.editorconfig
文件(或在其自己的设置中)使用,它仍然会一直收到。:
.editorconfig
root = true
[*]
end_of_line = lf
已经是 2020 年了,IDE 和工具已经
LF
在 Windows 上得到支持,那么我怎样才能拥有这些好东西呢?
解决方案
有两个 git config 属性会影响行尾:core.autocrlf
和core.eol
.
以前,您被告知使用core.autocrlf = true
能够处理跨平台项目,但现在不再如此true
。
如果您的系统/IDE/工具支持LF
并且您确实想像团队中的其他人一样使用LF
而没有任何静默lf->crlf->lf
规范化,则必须关闭autocrlf
并配置eol
为不推断native
行尾,而是强制它使用lf
.
现在有两种方法可以LF
在所有文件中实现 a/o repos:
- 全局用于本地计算机上的所有存储库。
.gitattributes
通过签入文件的每个存储库。
此文件会覆盖克隆存储库的每个人的任何本地配置。
我个人建议同时使用所有本地存储库并确保跨平台跨开发一致性。
1)全局用于本地计算机上的所有存储库
在您的工作目录(您的本地仓库)中:
首先提交所有内容
让我们有点偏执,并在全局和 repo 中设置它。以防万一。
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
2)通过签入文件的每个存储库
在您的工作目录(您的本地仓库)中:
.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://stackoverflow.com/a/41282375/985454
https://stackoverflow.com/a/4425433/985454
故障排除
使用第三个选项重新安装 git for windows(如 Q 中的屏幕截图所示)
按原样结帐 - 按原样提交 (
core.autocrlf = false
)
推荐阅读
- r - 当值重复 3 次或更多次时创建新列
- linux - Docker 镜像 rabbitmq,apt 坏了
- reactjs - 更新状态的正确语法是什么?
- npm - 纱线错误日志文件的路径是什么?
- google-bigquery - Bigquery - 使用 ROW_NUMBER() 从 10M 表创建 bin 时,查询执行期间资源超出
- java - 在这里使用 lambda、function 和 optional 有什么好处?
- javascript - NoUiSlider - 不隐藏线条
- android - Android GPS FusedLocationProviderClient:错误的经度
- r - 关闭交互式地图上的 tmap 图例?
- php - 从 xml 标签中提取值