Hexo 双分支部署指南:从原理到 Netlify 实战

Hexo 双分支部署指南:从原理到 Netlify 实战

在 Hexo 博客部署中,很多人会困惑于hexo d自动部署与 GitHub 手动提交的区别,以及如何通过双分支结构优雅地部署到 Netlify。本文将清晰拆解两种部署方式的核心差异,并手把手教你用双分支策略实现 Netlify 部署,兼顾源码安全与静态文件发布需求。

一、核心概念:hexo d与 GitHub 手动提交的区别

简单说,两者的本质是操作对象和目标分支的不同,具体区别如下:

维度hexo d(自动部署)GitHub 手动提交(git push)
操作对象仅处理public文件夹(静态文件:HTML/CSS/JS 等)处理 Hexo 源码(source文章、themes主题、_config.yml配置等)
依赖配置依赖_config.yml中的deploy字段(指定仓库和分支)依赖 Git 基础命令(add/commit/push),无需特殊配置
分支用途通常部署到静态文件分支(如gh-pages/netlify-pages)通常提交到源码分支(如main)
核心作用快速发布静态文件到展示平台备份源码、多设备同步开发
是否需要****package.json不需要(仅推送静态文件)需要(源码分支需依赖管理)

关键原理:Hexo 的 “源码 - 静态文件” 分离

Hexo 是静态博客生成器,工作流分为两步:

  1. hexo g(生成):将source中的 Markdown 源码转换为public中的静态文件;

  2. hexo d(部署):将public推送到指定分支。

手动提交则是直接管理源码,两者需通过不同分支隔离,否则会导致文件覆盖(这也是建议双分支的核心原因)。

二、双分支部署策略:源码与静态文件分离

双分支策略的核心是用两个分支分别管理源码和静态文件,既保护源码安全,又满足不同平台的部署需求。推荐分支命名:

  • main:存放 Hexo 源码(Markdown 文章、主题、配置等);

  • netlify-pages:存放public静态文件(供 Netlify 直接部署)。

三、部署到 Netlify 的两种方式(按需求选择)

方式 1:静态文件分支部署(直接用public内容)

适合场景:希望直接部署本地生成的public文件,跳过 Netlify 云端构建,无需package.json。

步骤 1:创建静态文件分支
# 1. 新建并切换到空分支(无历史记录,更干净)
git checkout --orphan netlify-pages# 2. 删除当前分支所有文件(避免污染源码)
git rm -rf .# 3. 本地生成最新public(确保包含所有文章)
hexo clean && hexo generate# 4. 将public内容复制到当前分支根目录(注意是内容,不是文件夹)
cp -r public/* .# 5. 提交静态文件
git add .
git commit -m "部署静态文件到netlify-pages"
git push -u origin netlify-pages  # 推送到远程静态分支
步骤 2:配置 Netlify(无需构建)
  1. 登录 Netlify,关联你的 GitHub 仓库;

  2. 进入站点设置 → Build & deployBuild settings

    • Branch to deploy:选择netlify-pages;
    • Build command:留空(或填#,表示不执行构建);
    • Publish directory:填.(点号,表示直接发布分支根目录的静态文件)。
  1. 点击 “Deploy site”,Netlify 会直接读取netlify-pages分支的静态文件并部署。

方式 2:源码分支部署(云端生成public)

适合场景:希望 Netlify 自动生成public,需依赖package.json管理依赖,适合多设备同步开发。

步骤 1:准备源码分支
# 1. 切换到源码分支(如main,若不存在则创建)
git checkout -b main# 2. 确保本地有完整源码(关键文件)
ls  # 应包含:source/、themes/、_config.yml、package.json、package-lock.json# 3. 若缺失package.json,重新初始化(正常Hexo项目默认包含)
npm init -y  # 生成基础package.json
npm install hexo --save  # 安装Hexo核心依赖# 4. 提交源码
git add .
git commit -m "提交Hexo源码(含package.json)"
git push -u origin main  # 推送到远程源码分支
步骤 2:配置 Netlify(云端构建)
  1. 进入 Netlify 站点设置 → Build settings
    • Branch to deploy:选择main;
    • Build command:填npm install && hexo generate(安装依赖→生成 public);
    • Publish directory:填public(指定静态文件目录)。
  1. 点击 “Deploy site”,Netlify 会自动执行:
    • 拉取main分支源码 → 安装依赖 → 生成public → 部署静态文件。

四、关键说明与注意事项

1. 分支隔离是核心

  • 两个分支必须严格隔离:main只存源码,netlify-pages只存静态文件,避免互相污染;

  • 用.gitignore确保main分支忽略public(避免源码分支包含静态文件):

# main分支的.gitignore
public/
node_modules/

2. 静态文件分支部署注意事项

  • 本地生成public时必须完整:执行hexo clean && hexo generate后,检查public中是否有index.html和文章对应的 HTML 文件;

  • 更新文章时,需重新生成public并同步到netlify-pages分支:

hexo clean && hexo generate  # 生成新public
git checkout netlify-pages
rm -rf *  # 删除旧文件
cp -r public/* .  # 复制新文件
git add . && git commit -m "更新文章" && git push

3. 源码分支部署注意事项

  • package.json必须包含必要依赖:至少有hexo(否则 Netlify 会提示 “hexo: command not found”);

  • 主题和配置文件必须完整:themes文件夹和_config.yml需提交到main分支,否则云端生成的public会缺失样式;

  • 构建命令可简化:若package.json中定义了build脚本,可直接用npm run build:

// package.json
"scripts": {"build": "hexo clean && hexo generate"
}

此时 Netlify 的 Build command 可改为npm install && npm run build。

五、总结:核心要点速览

部署方式分支名称关键配置(Netlify)适用场景
静态文件部署netlify-pagesBuild command:留空;Publish dir:.本地生成 public,追求部署速度和稳定性
源码云端构建mainBuild command:npm install && hexo generate;Publish dir:public多设备开发,需要自动生成静态文件

通过双分支策略,你可以根据需求灵活选择部署方式:想直接用public就选静态文件分支,想让云端自动处理就选源码分支。两种方式都能完美适配 Netlify,既保证源码安全,又能顺畅发布博客。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/919071.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/919071.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【数据结构】深入理解单链表与通讯录项目实现

文章目录一、单链表的概念及结构1.1 什么是单链表?1.2 节点的组成1.3 单链表的特点二、单链表的实现2.1 类型定义2.2 基础工具函数1. 链表打印函数2. 节点创建函数2.3 单链表的核心操作(1)插入操作1. 尾插(SLTPushBack&#xff09…

《Python学习之字典(一):基础操作与核心用法》

坚持用 清晰易懂的图解 代码语言,让每个知识点变得简单! 🚀呆头个人主页详情 🌱 呆头个人Gitee代码仓库 📌 呆头详细专栏系列 座右铭: “不患无位,患所以立。” Python学习之字典(…

[安洵杯 2019]Attack

BUUCTF在线评测BUUCTF 是一个 CTF 竞赛和训练平台,为各位 CTF 选手提供真实赛题在线复现等服务。https://buuoj.cn/challenges#[%E5%AE%89%E6%B4%B5%E6%9D%AF%202019]Attack流量分析题,浏览的时候发现攻击者上传信息页面, 直接搜索 flag 就…

复合机器人食品分拣生产线:一体化控制系统引领高效柔性新食代

在食品工业高速发展的今天,面对种类繁多、形态各异的原料分拣需求,以及日益严格的卫生安全与效率要求,传统的固定式分拣设备已难以胜任。复合机器人食品分拣生产线凭借其融合移动(AMR)与操作(机械臂&#x…

二十七、动态SQL

动态SQL介绍动态SQL&#xff1a;if与where标签动态案例-动态更新EmpMapper&#xff08;接口&#xff09;中对应代码块 //动态更新员工public void update2(Emp emp);EmpMapper.xml中对应代码块 <!-- 动态更新员工--><update id"update2">update emp<s…

AI可行性分析:数据×算法×反馈=成功

3.1 从场景到AI可行性分析:需求拆解为“数据+算法+反馈” 核心公式: AI可行性 = 数据可获得性 算法适配性 反馈闭环性 (任一要素为0则需求不可行) 一、传统需求 vs AI需求本质差异 需求文档对比(电商案例) 维度 传统需求文档(购物车功能) AI需求文档(商品推荐系…

【图论】分层图 / 拆点

大多数都是同一个套路&#xff0c;将图拆开成几个图&#xff0c;每一层都对应着一个不同的状态&#xff0c;比如把到点 i 的状态拆成经过了 j 次操作所得的 xx 结果&#xff0c;一般数据不会很大 目前遇到的可分为 3 类&#xff1a; ①.给你最多 k 次操作&#xff0c;求 xx 结…

VS Code配置MinGW64编译MATIO库

VS Code 使用 MinGW64 编译 C 代码并配置 MATIO 库的完整步骤 1. 安装 MSYS2 下载 MSYS2 访问 MSYS2 官网下载安装包&#xff08;选择 x86_64 版本&#xff09;默认安装路径&#xff1a;C:\msys64 更新 MSYS2 包数据库 打开 MSYS2 MinGW 64-bit&#xff08;注意不是 MSYS&…

【前端Vue】使用ElementUI实现表单中可选择可编辑的下拉框

由于项目在vue的开发框架下&#xff0c;因此使用ElementUI组件库进行实现。我希望可选择可编辑的下拉框右侧有跟下拉框一样的箭头&#xff0c;并且在未输入任何内容时&#xff0c;点击该框体会出现选择列表进行填充数据的选择&#xff0c;点击选中数据后列表消失&#xff0c;数…

每日五个pyecharts可视化图表-line:从入门到精通 (4)

欢迎来到pyecharts折线图系列的第四篇文章&#xff01;在前三篇中&#xff0c;我们已经掌握了多种折线图类型&#xff0c;包括基本折线图、平滑折线图、雨量流量关系图、多X轴折线图、堆叠区域图和阶梯图等。在本文中&#xff0c;我们将继续探索五种更高级的折线图类型&#xf…

MySQL中的字符串函数

目录 一、字符串【分割】函数&#xff1a;SUBSTRING_INDEX() SUBSTRING_INDEX函数 练习题 统计每种性别的人数 提取博客URL中的用户名 截取出年龄 SQL83 商品id数据清洗统计 SQL250 查找字符串中逗号出现的次数 二、字符串【截取】函数&#xff1a;SUBSTRING() 基本语…

CodeBuddy IDE深度体验:AI驱动的全栈开发新时代

在人工智能技术迅猛发展的今天&#xff0c;开发者工具正在经历一场深刻的变革。腾讯推出的CodeBuddy IDE作为全球首个“产设研一体”的AI全栈高级工程师工具&#xff0c;重新定义了开发者的日常工作流程。 从需求分析到设计、编码、部署&#xff0c;CodeBuddy通过AI能力将传统…

实现Android图片手势缩放功能的完整自定义View方案,结合了多种手势交互功能

主要功能特点&#xff1a;支持双指手势缩放图片&#xff0c;通过ScaleGestureDetector实现平滑的缩放效果25双击图片可切换初始大小和中等放大比例16使用Matrix进行图像变换&#xff0c;保持缩放中心点为手势焦点位置57自动缩放动画通过Runnable实现渐进式变化1限制最小和最大缩…

uni-app实战教程 从0到1开发 画图软件 (橡皮擦)

一、本期内容简述1. 开发内容上一期&#xff0c;我们一起学习了如何进行绘画&#xff0c;本期我们将学习如何擦除我们所绘画的内容&#xff0c;也就是“橡皮擦”功能。首先&#xff0c;我们应该明确需求&#xff0c;橡皮擦可以擦除掉我们绘画的内容。2. 开发需求所以开发需求&a…

《A Practical Guide to Building Agents》文档学习

《A Practical Guide to Building Agents》文档总结 该文档是一份面向产品和工程团队的实用指南&#xff0c;旨在帮助团队探索并构建首个基于大语言模型&#xff08;LLM&#xff09;的智能体&#xff08;Agent&#xff09;&#xff0c;提炼了大量客户部署经验&#xff0c;提供了…

OpenCV图像注册模块

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 注册模块实现了参数化图像配准。所实现的方法是直接对齐&#xff08;direct alignment&#xff09;&#xff0c;即&#xff0c;它直接使用像素值来…

模型驱动与分布式建模:技术深度与实战落地指南

摘要 在AI、云原生与全球化协作的大潮中&#xff0c;模型驱动架构&#xff08;MDA&#xff09;与分布式建模不再是概念&#xff0c;而是支撑复杂系统设计与持续演化的核心引擎。本文从元模型、模型转换引擎&#xff0c;到协同协议、冲突解决算法&#xff0c;再到AI辅助建模与自…

计算机基础速通--数据结构·图的基础应用二(基础图算法)

如有问题大概率是我的理解比较片面&#xff0c;欢迎评论区或者私信指正。 最近了解到了一个新的改变和提高自己的方法时刻记录不论多小的事情都记下&#xff0c;我目前用了4天&#xff0c;之前感觉一天天忙死但没啥收获&#xff0c;但是记录了之后知道自己的时间花在了哪里&…

设计模式-策略模式 Java

模式概述 策略模式是一种行为型设计模式&#xff0c;它通过定义一系列可互换的算法&#xff0c;并将每个算法封装成独立类&#xff0c;使客户端能够根据需要动态切换算法 简单代码示例 // 1. 抽象策略接口 interface PaymentStrategy {void pay(int amount); }// 2. 具体策略实…

【机器学习深度学习】客观评估训练程度

目录 前言 一、什么是客观评估&#xff1f; 二、客观评估的两大核心方法 1. 判别式评测&#xff08;Discriminative Evaluation&#xff09; 2. 生成式评测&#xff08;Generative Evaluation&#xff09; 三、为什么客观评估成本更高&#xff1f; 1.训练目标收紧 2.训…