• 一条命令就完成构建 + 部署
  • 服务器自动同步最新 public 文件
  • 整个过程不需要登录服务器
  • 也不需要 CI/CD 或额外工具

那么 基于 Git 的 Hugo Public 目录热更新方案 是最轻量、最稳定的部署方式。

这篇文章将完整介绍如何使用 Git 将 Hugo 的 public 目录推送到服务器,并通过服务器端 hook 实现热更新自动上线


为什么要用 Git 部署 Hugo ?

Hugo 的 public 目录只是纯静态文件,部署可以非常简单:

  • 不需要 Nginx reload
  • 不需要重启服务
  • 不需要 build 服务器
  • 甚至不需要 ssh 登录

只要 push 一下,就能让服务器自动同步最新 public 文件,实现真正的 Zero-Downtime 热更新


一、整体方案架构

本地电脑
├── Hugo 项目
│    ├── content/
│    ├── themes/
│    ├── public/ ← 构建后目录
│
└── git push deploy main
            ↓
服务器
└── /var/repo/hugo_public.git (bare repo)
            ↓ post-receive hook 自动触发
└── /var/www/website    ← 网站根目录(热更新)

流程:

  1. 本地执行:
hugo && git push deploy main
  1. push 到服务器的 bare 仓库(没有工作区)
  2. 服务器触发 post-receive hook
  3. 自动 checkout 最新 public 文件到 /var/www/website
  4. 网站立即更新(零停机)

二、服务器初始化部署仓库(bare repo)

服务器上执行:

mkdir -p /var/repo
cd /var/repo
git init --bare hugo_public.git

设置默认主分支(避免 “branch yet to be born”):

cd hugo_public.git
git symbolic-ref HEAD refs/heads/main

三、配置 post-receive 自动部署脚本

编辑:

/var/repo/hugo_public.git/hooks/post-receive

内容:

#!/bin/bash
set -e

echo ">>> 正在部署 Hugo 静态文件..."

WORK_TREE=/var/www/website
GIT_DIR=/var/repo/hugo_public.git

# 自动创建 main 分支(首次部署不会失败)
if ! git rev-parse --verify main >/dev/null 2>&1; then
    git checkout -b main
fi

git --work-tree=$WORK_TREE --git-dir=$GIT_DIR checkout -f main

echo ">>> 部署完成!"

赋予可执行权限:

chmod +x /var/repo/hugo_public.git/hooks/post-receive

四、本地配置 deploy 远程仓库

进入 Hugo 项目目录:

cd public
git init
git add .
git commit -m "init public"

添加服务器地址:

git remote add deploy ssh://ubuntu@服务器IP/var/repo/hugo_public.git

五、发布流程:一条命令完成构建 + 部署

你可以直接用两段式:

hugo
cd public
git add .
git commit -m "update"
git push deploy main

或者把它合成一个命令:

hugo && (cd public && git add . && git commit -m "update" && git push deploy main)

服务器自动执行:

>>> 正在部署 Hugo 静态文件...
>>> 部署完成!

网站秒级更新


六、方案优势(为什么说这是“热更新”?)

优势说明
零停机静态文件直接覆盖,无需 reload
不需登录服务器所有操作本地 push 完成
不需 CI/CD无 GitHub Actions / GitLab Runner
安全仅开放 SSH
高速Hugo 构建 + Git push 极快
可回滚服务器 public 目录有完整 Git 历史

这是部署 Hugo 最轻便、最优雅的方法之一。


七、总结

本方案的核心逻辑:

  • 本地 push public → 服务器自动 checkout
  • 利用 bare 仓库 + hook
  • 完整的版本控制
  • 热更新、零停机

如果你正在运营博客、文档站、产品官网,这是目前最强的 Hugo 私有部署方案。

本站提供的所有下载资源均来自互联网,仅提供学习交流使用,版权归原作者所有。如需商业使用,请联系原作者获得授权。 如您发现有涉嫌侵权的内容,请联系我们 邮箱:[email protected]