一、本地操作流程
1. 查看文件变更状态
git status
- 作用:查看哪些文件被修改、新增或删除,确认更新内容
2. 添加变更到暂存区
git add .
- 说明:.表示添加所有变更文件,也可指定单个文件如git add content/posts/new-article.md
3. 提交变更到本地仓库
git commit -m "更新博文:《Hugo博客部署指南》"
- 建议:提交信息明确说明更新内容,便于后续追溯
4. 拉取远程仓库最新代码
git pull origin main
- 注意:main为默认主分支,若使用其他分支请替换,避免推送时出现冲突
5. 生成静态文件
hugo -D
-
参数说明:
-
- -D:包含草稿状态的文章(draft: true)
-
- –minify:压缩 HTML、CSS 和 JS 文件(可选)
-
- -b https://yourdomain.com:设置基准 URL(多环境部署时使用)
二、远程部署操作
1. 推送到 GitHub 主分支
git push origin main
- 效果:触发 GitHub Actions 工作流(若已配置)自动部署到 GitHub Pages
2. 验证部署状态
查看 GitHub Actions 运行情况:
-
进入 GitHub 仓库 → Actions标签
-
查看Deploy to GitHub Pages工作流是否成功
-
点击具体任务查看日志,排查错误(如有)
确认博客更新:
# 本地预览(部署前可选)
hugo server -D
-
访问http://localhost:1313确认新博文已显示
-
部署后访问线上地址,可能需要清除浏览器缓存
三、特殊场景补充命令
1. 更新博客主题
# 拉取主题子模块最新代码
git submodule update --remote --merge
# 提交主题变更
git add themes/your-theme/
git commit -m "更新主题到v1.2.0"
git push origin main
2. 修复部署错误
# 修改本地代码后重新提交
git add .
git commit -m "修复部署问题:修正配置文件"
git push origin main
3. 手动部署到自定义服务器
# 生成静态文件到指定目录
hugo -D -d /path/to/deploy/folder
# 通过SCP上传到服务器
scp -r /path/to/deploy/folder/* user@server:/var/www/your-blog/
# 远程重启服务(如Nginx)
ssh user@server "systemctl restart nginx"
四、自动化部署脚本
创建deploy.sh脚本简化流程:
#!/bin/bash
# 博客部署脚本
echo "开始部署Hugo博客..."
# 1. 检查状态并添加变更
git status
git add .
# 2. 提交变更
DATE=$(date +"%Y-%m-%d %H:%M:%S")
git commit -m "自动部署:$DATE" || exit 0
# 3. 拉取并推送
git pull origin main
git push origin main
# 4. 提示完成
echo "部署已触发,等待GitHub Actions完成..."
赋予执行权限并运行:
chmod +x deploy.sh
./deploy.sh
五、部署流程示意图
本地修改博文 → git add . → git commit → git pull → hugo -D → git push → GitHub Actions触发
↓
Hugo生成静态文件 → 推送到gh-pages分支 → 博客自动更新(约1-3分钟)
六、注意事项
-
分支设置:确保 GitHub Actions 配置文件(.github/workflows/gh-pages.yml)正确监听main分支
-
主题依赖:若使用主题,需在 Actions 中配置submodules: true拉取主题代码
-
草稿处理:线上环境如需显示草稿,需在 Hugo 命令或 Actions 中添加-D参数
-
缓存问题:部署后若未显示更新,尝试强制刷新浏览器(Ctrl+Shift+R)或清除 CDN 缓存
...