前言
在使用 Hugo 搭建博客并部署到 Cloudflare Pages 时,正确的 Git 提交流程很重要。本文记录了如何避免提交不必要的构建文件,保持仓库整洁。
问题背景
Hugo 会将源文件(content/)编译成静态 HTML 文件输出到 public/ 目录。这些构建产物不应该提交到 Git 仓库,因为:
- 文件体积大:每次构建都会生成大量 HTML、CSS、JS 文件
- 频繁变动:每次修改都会重新生成,造成大量无意义的 diff
- 自动构建:Cloudflare Pages 会自动执行构建,不需要提交构建产物
- 污染历史:会让 Git 历史变得混乱,难以追踪真正的内容变更
配置 .gitignore
首先创建 .gitignore 文件,排除构建输出和临时文件:
# Hugo build output
public/
resources/
# Hugo lock file
.hugo_build.lock
# IDE
.vscode/
.idea/
*.swp
*.swo
*~
# OS
.DS_Store
Thumbs.db
# Node modules (if using npm for theme development)
node_modules/
# Temporary files
*.log
*.tmp
标准提交流程
1. 创建或编辑内容
|
|
2. 本地预览(可选但推荐)
|
|
3. 提交源文件到 Git
|
|
4. 自动部署
推送后,Cloudflare Pages 会自动:
- 检测到 GitHub 仓库的新提交
- 执行
hugo构建命令 - 部署生成的静态文件到 CDN
- 几分钟后网站自动更新
提交信息规范
建议使用语义化的提交信息,让历史记录更清晰:
| 前缀 | 用途 | 示例 |
|---|---|---|
feat: |
新增文章或功能 | feat: 添加 Docker 入门教程 |
fix: |
修正内容错误 | fix: 修正文章中的代码错误 |
docs: |
文档更新 | docs: 更新 README 说明 |
style: |
样式或格式调整 | style: 优化代码高亮配置 |
chore: |
日常维护 | chore: 更新依赖版本 |
应该提交的文件
✅ 应该提交:
content/- 所有 Markdown 文章和页面hugo.toml- Hugo 配置文件static/- 静态资源(图片、自定义 CSS/JS)layouts/- 自定义布局模板archetypes/- 文章模板themes/- 主题文件(如果自己管理).gitignore- Git 忽略规则
❌ 不应该提交:
public/- Hugo 构建输出目录resources/- Hugo 资源缓存.hugo_build.lock- Hugo 锁文件.DS_Store- macOS 系统文件.vscode/- 编辑器配置
常见问题
Q: 不小心提交了 public/ 目录怎么办?
|
|
Q: 如何验证 .gitignore 是否生效?
|
|
Q: 可以直接用 git add . 吗?
可以。只要 .gitignore 配置正确,git add . 会自动排除被忽略的文件,不会添加 public/ 等目录。
完整示例
从创建文章到发布的完整流程:
|
|
总结
使用 Hugo + Git + Cloudflare Pages 的工作流程核心原则:
- 只提交源文件,不提交构建产物
- 配置好 .gitignore,避免误提交
- 使用语义化提交信息,保持历史清晰
- 相信自动化,让 CI/CD 完成构建和部署
这样可以保持 Git 仓库整洁,专注于内容创作,而不用担心构建和部署的细节。