一、本地操作流程

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 文件(可选)

二、远程部署操作

1. 推送到 GitHub 主分支

git push origin main
  • 效果:触发 GitHub Actions 工作流(若已配置)自动部署到 GitHub Pages

2. 验证部署状态

查看 GitHub Actions 运行情况:
  1. 进入 GitHub 仓库 → Actions标签

  2. 查看Deploy to GitHub Pages工作流是否成功

  3. 点击具体任务查看日志,排查错误(如有)

确认博客更新:
# 本地预览(部署前可选)
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分钟)

六、注意事项

  1. 分支设置:确保 GitHub Actions 配置文件(.github/workflows/gh-pages.yml)正确监听main分支

  2. 主题依赖:若使用主题,需在 Actions 中配置submodules: true拉取主题代码

  3. 草稿处理:线上环境如需显示草稿,需在 Hugo 命令或 Actions 中添加-D参数

  4. 缓存问题:部署后若未显示更新,尝试强制刷新浏览器(Ctrl+Shift+R)或清除 CDN 缓存