将 Hugo 网站部署到 Github Pages
1 引言
之前我们已经成功安装了 Hugo 并且在本地搭建并测试了一个网站,今天我们把这个网站部署到 GitHub Pages(Zyed816.github.io)
1.1 为什么托管到 GitHub Pages 是可行的
个人博客最终只是一些 HTML、CSS 和图片文件。像 Hugo 这样的工具已经在本地把文章“加工”成了普通网页,而 GitHub Pages 的作用正是把这些网页文件放到互联网上,让别人通过浏览器访问。它不需要服务器程序或数据库,只要有文件就能工作,而 GitHub 正好提供了一个长期稳定、免费的地方来存放并公开这些文件,所以用 GitHub Pages 来发布个人博客既简单又可靠
1.2 托管到 GitHub Pages 的优势
选择将个人博客托管到 GitHub Pages,主要是因为它免费、稳定且无需服务器运维,非常适合静态博客的发布与长期维护。GitHub Pages 与 Hugo 等静态站点生成器天然契合,只需将生成的静态文件推送到仓库即可自动上线,实现了“版本控制即发布”的高效工作流。同时,网站内容完全由自己掌控,不依赖平台数据库或私有服务,安全性高、可迁移性强,也便于与 GitHub 生态(代码、Issues、Discussions)结合,是技术型个人博客的一种成熟且专业的托管方案
2 创建一个 github 仓库
登录 github,依次点击头像 -> Repositories -> New,新建一个名为 "用户名.github.io" 的仓库,例如我的用户名是 Zyed816,这里新仓库的名称就是 Zyed816.github.io



新仓库创建完成如图

3 修改 baseURL
找到网站项目根目录下的 hugo.toml,修改 baseURL 为 https://仓库名,这里是 https://Zyed816.github.io

为什么要这么做:
在 hugo.toml 中将 baseURL 设置为 https://Zyed816.github.io 的作用,是告诉 Hugo 你的网站最终会部署到哪个网址。Hugo 会根据这个地址生成页面中的所有绝对链接、资源路径和导航链接,确保文章链接、CSS、图片等在 GitHub Pages 上能够被正确访问;如果不设置或设置错误,网站在本地可能正常,但部署到线上后就容易出现样式丢失或链接失效的问题
4 清理并生成静态文件
执行 hugo 命令,清理并生成静态文件,完成后 hugo 会根据新的站点地址重新生成所有静态网页、资源路径和链接,并将结果统一输出到 public/ 文件夹中,接下来只需要将 public/ 文件夹下的内容推送到 Github 即可

5 将 public/ 推送到 Github
cd public移动到 public 文件夹(注意这时我将项目名称从 quickstart 修改为了 blog),然后依次运行
git init
git branch -M main
git remote add origin https://github.com/Zyed816/Zyed816.github.io.git
git add .
git commit -m "Deploy Hugo site"
git push -u origin main

5.1 可能遇到的问题
在执行 git push -u origin main 时我遇到了上图中的问题,输入账号和密码后一直提示验证失败,GPT 给出原因如下

如果你也遇到相同的问题可以参考以下步骤解决
5.2 生成 SSH Key(Windows)
在 cmd 中运行:
ssh-keygen -t ed25519 -C "your_email@example.com"
-t ed25519用于指明加密算法,-C 后面的邮箱可以随意填写,我填写的是注册 github 的邮箱,据 GPT 说这部分是注释内容不影响功能
5.3 把 SSH Key 加到 GitHub
执行命令
type %USERPROFILE%\.ssh\id_ed25519.pub
复制结果

进入 github,点击 头像 -> Settings -> SSH and GPG keys -> New SSH key,新建一个名为 My windows PC 的 key,粘贴刚刚复制的内容

5.4 把仓库地址改为 SSH
执行命令
git remote set-url origin git@github.com:Zyed816/Zyed816.github.io.git
把当前 Git 仓库的远程地址从“HTTPS 方式”改为“SSH 方式”连接 GitHub。通俗一点说,就是在告诉 Git:“以后我和 GitHub 仓库 Zyed816/Zyed816.github.io 通信时,不要再用用户名和密码,而是用 SSH 密钥来验证身份”

5.5 测试并推送
运行
ssh -T git@github.com
git push -u origin main


现在访问 zyed816.github.io 就能看到了个人小站了!

6 参考资料
更多推荐

所有评论(0)