Hexo 部署:LF 与 CRLF 换行符警告及解决方案

Hexo 部署:LF 与 CRLF 换行符警告及解决方案

一、先明确警告的核心含义(再强调一次:无危害!)

LF will be replaced by CRLF the next time Git touches it 翻译过来的核心意思是:

Git 检测到当前文件中使用的是 LF 换行符(Linux/Mac 系统默认,Hexo 生成的静态文件(.html/.xml 等)默认也是 LF),而你的本地 Git 配置开启了「自动换行符转换」,下次 Git 对这些文件进行操作(检出、提交、推送)时,会自动把文件中的 LF 转换成 CRLF(Windows 系统默认换行符)。

关键补充:

LF vs **CRLF**:

  • LF:Line Feed,换行符,对应 \n,Linux/Mac/Hexo 生成文件、后端代码(Java/Python)默认使用。
  • CRLF:Carriage Return + Line Feed,回车换行符,对应 \r\n,Windows 记事本、前端部分编辑器默认使用。

警告不是错误:不会导致文件内容错乱、不会影响博客访问、不会导致部署失败,只是 Git 告诉你「我要做个格式转换,提前跟你说一声」。

二、为什么每次 hexo g/hexo d 都出现这个警告?

这是 Hexo 的工作机制决定的,核心流程如下,你就能明白为什么每次都出现:

**hexo g**(生成静态文件)

  • Hexo 会根据你的 Markdown 文章、主题配置,在 public 目录下重新生成所有静态文件(.html/.xml 等)。
  • 这些新生成的文件,默认使用 LF 换行符(Hexo 是基于 Node.js 开发的,Node.js 生成文件默认遵循 Linux 格式,即 LF)。

**hexo d**(部署,本质是调用 Git 命令)

  • Hexo 的 git 部署器,会把 public 目录下的静态文件复制到 Git 缓存目录,然后执行 git add/git commit/git push
  • 此时 Git 会扫描到这些「新生成的 LF 格式文件」,对比你的 Git 配置后,就会弹出「LF 要被转换成 CRLF」的警告。

循环往复

  • 每次执行 hexo g 都会重新生成一批 LF 格式文件,每次 hexo d 都会触发 Git 的换行符检测,因此警告会每次都出现。

三、为什么配置了 core.autocrlf false 还会出现?

你之前可能配置了全局 Git 配置,但 Hexo 部署有个「特殊点」:

  • Hexo 的 git 部署器可能会优先使用本地仓库配置(而非全局配置),如果你的 Hexo 本地仓库(E:\Blog\zhang-curry.github.io)没有单独配置 core.autocrlf false,就会继续使用 Git 的默认配置(Windows 下默认 core.autocrlf true,即自动转换 LF→CRLF),因此警告依然会出现。
  • 另外,hexo g 每次都会重新生成文件,相当于每次都是「新文件」,Git 都会重新检测一次换行符,这也是警告反复出现的原因。

四、彻底消除警告的两种方案(二选一,按需选择)

方案 1:永久配置(推荐,一劳永逸,统一使用 LF 换行符)

给 Hexo 本地仓库单独配置 core.autocrlf false,覆盖 Git 默认配置,彻底关闭自动换行符转换,步骤如下:

  1. 在 Hexo 根目录(E:\Blog\zhang-curry.github.io)执行以下命令:

    1
    2
    3
    4
    5
    # 1. 本地仓库配置:关闭自动换行符转换
    git config core.autocrlf false

    # 2. 本地仓库配置:强制文件使用 LF 换行符
    git config core.eol lf
  2. (可选)清理一次 Git 缓存,让配置立即生效:

    1
    2
    3
    git rm --cached -r .
    git add .
    git commit -m "配置本地仓库换行符为 LF,消除转换警告"
  3. 后续再执行 hexo clean && hexo g && hexo d,就不会再出现换行符警告了。

方案 2:忽略警告(简单,适合不想修改配置的场景)

既然警告不影响功能、不影响部署、不影响博客访问,直接忽略即可,这是很多 Windows 下使用 Hexo 的用户的选择,节省时间,无需额外操作。

总结

  1. 警告核心:Git 即将把 Hexo 生成的 LF 格式文件转换为 Windows 默认的 CRLF 格式,无任何危害;
  2. 反复出现的原因:hexo g 每次都会重新生成 LF 格式静态文件,hexo d 触发 Git 换行符检测,因此每次都出现;
  3. 解决办法:要么给 Hexo 本地仓库配置 core.autocrlf false 一劳永逸消除警告,要么直接忽略(不影响使用);
  4. 关键结论:你的 Hexo 部署已经成功,无需为这些警告担心,专注于写博客即可!