首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >HEXO系列教程 | 使用GitHub Actions部署Hexo / GitHub Pages | 全流程详细介绍

HEXO系列教程 | 使用GitHub Actions部署Hexo / GitHub Pages | 全流程详细介绍

作者头像
夜梦星尘
发布于 2024-08-20 11:25:04
发布于 2024-08-20 11:25:04
54600
代码可运行
举报
运行总次数:0
代码可运行

1. 前言

夜梦敢说这篇文章和HEXO系列教程 | 使用GitHub部署静态博客HEXO | 小白向教程是全网最详细的Hexo部署教程之二了!如果遇到问题你可以通过邮箱联系夜梦,夜梦看到了就会回复的!当然,再详细的文章也可能有错误,大家如果发现文章有问题的话请联系夜梦哦!

夜梦曾在HEXO系列教程 | 使用GitHub部署静态博客HEXO | 小白向教程中介绍了如何借助GitHub Pages来部署Hexo,但是这篇文章介绍的方法只能够将public文件夹中的内容上传到GitHub(就是纯静态HTML),因此无法使用Qexo来进行动态管理。省流:默认部署方式是Deploy from a branch(以分支部署):

所以这篇文章,夜梦将介绍部署Hexo的另一种方式——借助GitHub Actions部署GitHub Pages。本地部署的方法和夜梦之前写的文章一样,所以这里就直接复制了~

具体可以看官方文档(说实在的这文档有点……一言难尽):在 GitHub Pages 上部署 Hexo | Hexo

2. 准备Hexo

部署Hexo可以参考夜梦的这篇文章的第2节至第5节只需要到第5节!!!):HEXO系列教程 | 使用GitHub部署静态博客HEXO | 小白向教程。因为流程一致,夜梦在这篇文章中不再赘述了。

接下来我们要做的就和夜梦前面写的这篇文章不一样了。前面这篇教程仅需要public/这个文件夹下的内容上传到GitHub中,而利用GitHub Actions部署则不需要上传public/这个文件夹。

简而言之,这篇文章介绍的方法,不需要你在本地生成public文件夹,也就是不需要执行hexo c/hexo g/hexo d等命令。当然夜梦建议你本地执行一下,先看看效果,然后再上传到github中。

3. 首次将gh-pages分支push到GitHub

在本地Hexo仓库(HEXO文件夹)打开git命令界面(Git Bash),初始化仓库

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
git init

切换到gh-pages分支:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
git checkout -b gh-pages

添加文件到暂存区,将项目目录中的所有文件添加到 Git 的暂存区:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
git add .

提交更改,提交所有添加的文件,生成一个提交记录:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
git commit -m "这是第一次提交Hexo"

复制 GitHub 仓库的 URL: 在浏览器中打开你的 GitHub 仓库,点击 Code 按钮,然后复制仓库的 HTTPS 或 SSH 地址。

然后运行下面的命令,将本地仓库与GitHub仓库关联

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
git remote add origin <GitHub仓库的URL>

将本地仓库的内容推送到GitHub仓库gh-pages分支:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
git push -u origin gh-pages

如果是第一次推送,这个命令会将本地分支与远程分支关联,并推送所有内容。

如果你的Github仓库中已经有文件了,那夜梦建议你直接强制推送本地仓库到GitHub中(运行过上面那行命令就不要运行下面这行命令了!):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
git push --force origin gh-pages

4. 创建 Workflow

我们在GitHub的Hexo仓库中,找到Settings->Pages->Build and deployment,将source选择为GitHub Actions

等待它设置完成以后,我们选择Create your own(自己创建一个workflow文件)。在配置这个文件之前,我们先查看一下我们自己电脑上的Node.js版本。

然后将Node.js的版本替换为上个步骤中记下的版本,具体位置可以看夜梦的图示:

修改完成以后,就可以把这个配置文件复制到workflow配置文件中了(记得命名为pages.yml)。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
name: Pages

on:
  push:
    branches:
      - gh-pages # 我们设置的分支是 gh-pages

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
        with:
          token: ${{ secrets.GITHUB_TOKEN }}
          # If your repository depends on submodule, please see: https://github.com/actions/checkout
          submodules: recursive
      - name: Use Node.js 20
        uses: actions/setup-node@v4
        with:
          # Examples: 20, 18.19, >=16.20.2, lts/Iron, lts/Hydrogen, *, latest, current, node
          # Ref: https://github.com/actions/setup-node#supported-version-syntax
          node-version: "20.11.1"
      - name: Cache NPM dependencies
        uses: actions/cache@v4
        with:
          path: node_modules
          key: ${{ runner.OS }}-npm-cache
          restore-keys: |
            ${{ runner.OS }}-npm-cache
      - name: Install Dependencies
        run: npm install
      - name: Build
        run: npm run build
      - name: Upload Pages artifact
        uses: actions/upload-pages-artifact@v3
        with:
          path: ./public
  deploy:
    needs: build
    permissions:
      pages: write
      id-token: write
    environment:
      name: github-pages
      url: ${{ steps.deployment.outputs.page_url }}
    runs-on: ubuntu-latest
    steps:
      - name: Deploy to GitHub Pages
        id: deployment
        uses: actions/deploy-pages@v4

5. 再次将gh-pages分支push到GitHub

5.1 第二次push

由于我们在第4节中创建了workflow文件,而我们本地没有,所以我们需要pull一下,把GitHub上建立的workflow拉到本地。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
git pull origin gh-pages

然后再进行第二次推送。添加所有更改的文件(当然你也可以选着添加,夜梦这里就不介绍了):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
git add .

提交你所做的更改(方便看,相当于就是备注):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
git commit -m "夜梦又更新hexo了"

推送:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
git push origin gh-pages

5.2 第三次以及以后的push

添加所有更改的文件(当然你也可以选着添加,夜梦这里就不介绍了):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
git add .

提交你所做的更改(方便看,相当于就是备注):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
git commit -m "夜梦又更新hexo了"

推送:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
git push origin gh-pages

6. 常见报错

下面的报错是夜梦在尝试的时候遇到的,也给大家分享一下,一起避坑……

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
error: src refspec gh-pages does not match any

解决方法如下(由ChatGPT生成,夜梦已经验证了可行性):

1、本地没有创建 gh-pages 分支 你可能正在尝试将 gh-pages 分支推送到远程仓库,但本地并没有创建该分支。 解决方法:

  1. 创建 gh-pages 分支: 你可以通过以下命令从现有的分支(例如 mainmaster)创建 gh-pages 分支:
代码语言:txt
AI代码解释
复制
git checkout -b gh-pages

这会基于当前分支创建一个新的 gh-pages 分支,并切换到该分支。

  1. 推送 gh-pages 分支到远程仓库:
代码语言:txt
AI代码解释
复制
git push origin gh-pages

2、本地分支还没有任何提交

如果你已经创建了 gh-pages 分支,但没有任何提交记录,那么 Git 会认为该分支不存在,从而导致错误。

解决方法:

  1. gh-pages 分支上提交一些更改:
代码语言:txt
AI代码解释
复制
git checkout gh-pages    touch index.html  # 创建一个简单的文件    git add index.html    git commit -m "Initial commit on gh-pages"
  1. 推送 gh-pages 分支到远程仓库:
代码语言:txt
AI代码解释
复制
git push origin gh-pages

3、推送分支的名称错误

你可能错误地指定了分支名称,例如拼写错误或分支不存在。

解决方法:

  1. 检查分支名称: 确保你推送的分支名称拼写正确,并且该分支在本地已经存在。
代码语言:txt
AI代码解释
复制
git branch  # 查看所有本地分支
  1. 推送正确的分支: 如果你的分支名称是正确的并且存在,确保使用正确的命令推送:
代码语言:txt
AI代码解释
复制
git push origin gh-pages

通过这些步骤,你应该能够解决 src refspec gh-pages does not match any 错误并成功推送到远程仓库。

7. 进阶使用

配置YUN主题:

发布文章:

使用自己的域名

8. 声明

我的博客即将同步至腾讯云开发者社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=ix9n9rnuq63i

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-8-12 1,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
OpenCV 轮廓检测
http://blog.sina.com.cn/s/blog_8fc98fe501017ypb.html
流川疯
2022/11/29
1K0
OpenCV 轮廓检测
OpenCV 对轮廓的绘图与筛选操作总结
OpenCV利用findContours找到图像中的轮廓,根据这些轮廓的特征进行筛选有利于进一步逼近最终的兴趣区域,减少其他算法的时间,提高代码的运行效率,而对轮廓的绘图则可以直观的看到筛选结果。 其
chaibubble
2018/01/02
4.7K0
OpenCV  对轮廓的绘图与筛选操作总结
OpenCV findContours函数边缘近似方法
在使用OpenCV的过程中,findcontours是相对使用比较多的,在之前的博客中,介绍了vector<vector<Point> > contours容器: http://blog.csdn.net/chaipp0607/article/details/52858661 查找轮廓时内轮廓与外轮廓: http://blog.csdn.net/chaipp0607/article/details/53765440
chaibubble
2022/05/07
6240
OpenCV findContours函数边缘近似方法
【OpenCV入门之九】轮廓查找和多边形包围轮廓
学习计算机视觉最重要的能力应该就是编程了,为了帮助小伙伴尽快入门计算机视觉,小白准备了【OpenCV入门】系列。新的一年文章的内容进行了很大的完善,主要是借鉴了更多大神的文章,希望让小伙伴更加容易理解。如果小伙伴觉得有帮助,请点击一下文末的“好看”鼓励一下小白。
小白学视觉
2019/06/02
2K0
[C++]opencv中findContours函数用法
cv::findContours 是 OpenCV 库中用于在二值图像中查找轮廓的函数。该函数非常强大,可以用于图像分割、形状分析等任务。以下是对 cv::findContours 函数的详细介绍:
云未归来
2025/07/21
950
Opencv分水岭算法——watershed自动图像分割用法[通俗易懂]
分水岭算法是一种图像区域分割法,在分割的过程中,它会把跟临近像素间的相似性作为重要的参考依据,从而将在空间位置上相近并且灰度值相近的像素点互相连接起来构成一个封闭的轮廓,封闭性是分水岭算法的一个重要特征。
全栈程序员站长
2022/09/07
5K0
[C++]使用OpenCV去除面积较小的连通域
云未归来
2025/07/20
1060
[C++]使用OpenCV去除面积较小的连通域
VC++中使用OpenCV进行形状和轮廓检测
在VC++中使用OpenCV进行形状和轮廓检测,轮廓是形状分析以及物体检测和识别的有用工具。如下面的图像中Shapes.png中有三角形、矩形、正方形、圆形等,我们如何去区分不同的形状,并且根据轮廓进行检测呢?
ccf19881030
2024/05/24
9370
VC++中使用OpenCV进行形状和轮廓检测
终于可以摆脱OpenCV中Hough圆调参的烦恼了
OpenCV图像项目中,圆的检测很常见。 例如:检测烂苹果的个数,寻找目标靶心,人眼,嘴巴识别等。 其中用到的关键技术是OpenCV中集成的霍夫圆检测函数。 HoughCircles( InputArray image, // 输入图像 ,必须是8位的单通道灰度图像 OutputArray circles, // 输出结果,发现的圆信息 Int method, // 方法 - HOUGH_GRADIENT Double dp,
用户9831583
2022/06/16
3K0
终于可以摆脱OpenCV中Hough圆调参的烦恼了
OpenCV二维码检测与定位
在如今流行扫描的年代,应用程序实现二维码扫描检测与识别已经是应用程序的标配、特别是在移动端、如果你的应用程序不能自动发现检测二维码,自动定位二维码你都不好意思跟别人打招呼,二维码识别与解析基于ZXin
OpenCV学堂
2018/04/04
4.8K0
OpenCV二维码检测与定位
OpenCV 应用边缘检测与霍夫线变换实现旋转角度检测
使用opencv的图片旋转功能,把它旋转一个角度,旋转方法参考: http://blog.csdn.net/chaipp0607/article/details/63263347
chaibubble
2022/05/07
1.1K0
OpenCV 应用边缘检测与霍夫线变换实现旋转角度检测
OpenCV寻找复杂背景下物体的轮廓
这是一个来自OPenCV问答社区 - "answerOpenCV"问题,整编如下: (http://answers.opencv.org/question/200422/opencv-c-filling-holes/) title:OpenCV / C++ - Filling holes content: Hello there, For a personnel projet, I'm trying to detect object and there shadow. These are the result I have for now: Original:
OpenCV学堂
2018/10/23
2.2K0
OpenCV寻找复杂背景下物体的轮廓
OpenCV 检测二维码并定位
程序步骤: 1.图片缩小 2.灰度化,直方图均衡化,对比度增强,滤波 3.otsu阈值分割 4.五次膨胀 5.轮廓查找,如果轮廓满足一下条件,认为可能为二维码区域,像素面积大于60,长短轴之比小于1.3 6.对疑似区域做判断,因为本实验二维码贴在大概中心位置,找到疑似轮廓的质心,判断质心是不是在图片长宽的三分之一到三分之二之间,如果是认为是二维码区域 7.对二维码区域画成蓝色
chaibubble
2022/05/07
5520
OpenCV 检测二维码并定位
OpenCV轮廓检测,计算物体旋转角度
http://blog.csdn.net/wangyaninglm/article/details/41864251
流川疯
2019/01/18
4.5K0
OpenCV 删除轮廓的方法(一)
一种比较方便的删除轮廓的处理方式,是我刚刚学习到的一个方法,在这之前,如果我想删除一个不需要的轮廓,用的方法是将该轮廓填充为背景色,之前的博客提到过,在countours容器中,如果把轮廓填充为背景色,那么只是视觉上看不到该轮廓,但是实际上还存在在容器中。所以之前总是要填充之后从新copyto一下,然后重新找一遍轮廓,达到删除轮廓的效果。这种方式实在是low。 [见之前的博客http://blog.csdn.net/chaipp0607/article/details/52858661 代码如下:
chaibubble
2022/05/07
5230
OpenCV 删除轮廓的方法(一)
OPENCV轮廓提取findContours和drawContours
void findContours//提取轮廓,用于提取图像的轮廓 ( InputOutputArray image,//输入图像,必须是8位单通道图像,并且应该转化成二值的 OutputArrayOfArrays contours,//检测到的轮廓,每个轮廓被表示成一个point向量 OutputArray hierarchy,//可选的输出向量,包含图像的拓扑信息。其中元素的个数和检测到的轮廓的数量相等 int mode,//说明需要的轮廓类型和希望的返回值方式 int method,//轮廓近似方法 Point offset = Point() )
全栈程序员站长
2022/11/17
1.3K0
OPENCV轮廓提取findContours和drawContours
OpenCV 矩形轮廓检测
转载请注明出处:http://blog.csdn.net/wangyaninglm/article/details/44151213,
流川疯
2022/11/29
1.1K0
OpenCV 矩形轮廓检测
opencv 凹凸性检测 和 缺陷分析
原文链接:https://blog.csdn.net/lichengyu/article/details/38392473
用户1148525
2019/10/30
3.3K0
opencv 凹凸性检测 和  缺陷分析
OpenCV轮廓按面积大小排序(附Python/C++代码)
今天分享一个使用OpenCV给轮廓排序的例子,排序是依据轮廓面积的大小,当然你还可以改成其他的,比如宽高,长度等。
Color Space
2020/05/22
7.5K1
OpenCV 删除轮廓的方法(二)
利用vector迭代器(iterator)遍历内容,利用erase()函数删除轮廓,实验设计为小于20的轮廓被删除,为了效果更明显,在阈值分割前不做平滑和滤波的处理,代码如下:
chaibubble
2022/05/07
1K0
OpenCV 删除轮廓的方法(二)
相关推荐
OpenCV 轮廓检测
更多 >
LV.0
道一云高级工程师
交个朋友
加入腾讯云官网粉丝站
蹲全网底价单品 享第一手活动信息
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档