72、【Ubuntu】【Hugo】搭建私人博客:Git 下载方式对比

【声明】本博客所有内容均为个人业余时间创作,所述技术案例均来自公开开源项目(如Github,Apache基金会),不涉及任何企业机密或未公开技术,如有侵权请联系删除

背景

上篇 blog
【Ubuntu】【Hugo】搭建私人博客:添加主题

分析了用 git submodule add 将 PaperMod 主题下载到 themes 目录中,然后进一步分析了 git submodule addgit clone 的区别,下面继续

搭建私人博客

上篇 blog 分析了 git submodule addgit clone 的一些差异,下面继续:

  • 协作一致性 :用 submodule 的话,所有人都可以得到完全相同的主题,而直接 clone,每个人拿到的版本可能都不一致,不利于多人协作开发
  • Git 历史清晰度 :用 submodule 主仓库就只记录博客内容变更,但如果用 clone,每次主题更新都会污染到主仓库历史

OK,下面举个例子,来具体看下

当前 PaperMod 的版本发布了 v1.0 ~ v8.0

假设后面 PaperMod 发布了 v9.0,修复了一个安全漏洞,如果用 git submodule 的话,要更新主题,可以用如下命令进行更新

bash 复制代码
cd themes/PaperMod
git fetch
git checkout v9.0
cd ../..
git add themes/PaperMod
git commit -m "Update theme to v9.0 (security fix)"
git push

只用 5 行 Git 命令,干净利落,主仓库历史清晰,只需要一条主题 commit 更新 Update theme to v9.0 (security fix)

而如果直接用 clone 的话,流程大致如下

  • 首先去 Gitee 下载 v9.0 的 zip 包
  • 解压,手动覆盖 themes/PaperMod 所有文件
  • 到主仓库 git add,发现几百个文件被修改(都是主题目录的)
  • 提交后,主题仓库 Git 历史里全是主题代码变更,和博客内容无关
  • 如果之前改过主题某行 CSS,那么还要手动解决 merge 冲突

可以看到,直接 clone 费时易错,污染历史,还难以回滚,有很多 弊端

另外,从安全与可追溯的角度 ,用 git submodule 的话,别人知道 themes/PaperMod 是来自另一个仓库 https://gitee.com/hitweston/paper-mod.git,而用直接 clone 的话,Git 会认为这些代码也是主仓库的一部分,别人就无法知道它其实是第三方主题,在开源项目中这就很重要,得尊重原作者,明确依赖来源

OK,介绍完 git submodulegit clone 的区别,下面回到主仓库,终端输入

bash 复制代码
git add .
git commit -m "Initial commit with PaperMod submodule"

将 PaperMod 主题 commit 更新到主仓库

在终端输入

bash 复制代码
git submodule status

可以看到当前主仓库依赖的是 PaperMod 哪次 commit 信息(v8.0)

OK,更新 hugo.toml 配置文件为如下内容

bash 复制代码
baseURL = "http://localhost:1313/"
languageCode = "zh-CN"
title = "我的博客"
theme = "PaperMod"

[params]
  defaultTheme = "auto"
  homeInfoParams.title = "欢迎来到我的博客"
  homeInfoParams.content = "这里记录技术与思考。"
  enableTOC = true

在终端输入

bash 复制代码
hugo server -D

可以预览博客网站,这里有几个点说下,首先终端输入

bash 复制代码
hugo server --help

查看命令说明如下

  • 首先,Hugo 自带一个 Web 服务器,能一边构建网站,一边提供服务(不需要额外再启动像 Python http.server 那样的 Web 服务)
  • 虽然 Hugo 性能很高,但也只是一个开发用的简易服务器,不支持像 Nginx/Apache 那样的高级功能,比如 HTTPS,或者反向代理等
  • 默认情况下,Hugo 会把生成的 HTML/CSS/JS 等静态文件写入磁盘,然后提供服务,不过也可以用 --renderToMemory 选项,让 Hugo 完全在内存中渲染,这样速度更快,但也更吃内存(没啥事儿的话,放磁盘就够了)
  • Hugo 会自动监听项目中的源文件,比如文章,配置,主题等,一旦保存了修改,Hugo 会立即重新构建网站(一般时间 < 100ms),并自动刷新浏览器页面,实现所见即所得的协作体验(这点很棒)

OK,本篇先到这里,如有疑问,欢迎评论区留言讨论,祝各位功力大涨,技术更上一层楼!!!更多内容见下篇 blog
【Ubuntu】【Hugo】搭建私人博客:Hugo&PaperMod 兼容问题

相关推荐
chlk1237 小时前
Linux文件权限完全图解:读懂 ls -l 和 chmod 755 背后的秘密
linux·操作系统
舒一笑8 小时前
Ubuntu系统安装CodeX出现问题
linux·后端
改一下配置文件8 小时前
Ubuntu24.04安装NVIDIA驱动完整指南(含Secure Boot解决方案)
linux
深紫色的三北六号18 小时前
Linux 服务器磁盘扩容与目录迁移:rsync + bind mount 实现服务无感迁移(无需修改配置)
linux·扩容·服务迁移
SudosuBash1 天前
[CS:APP 3e] 关于对 第 12 章 读/写者的一点思考和题解 (作业 12.19,12.20,12.21)
linux·并发·操作系统(os)
哈基咪怎么可能是AI1 天前
为什么我就想要「线性历史 + Signed Commits」GitHub 却把我当猴耍 🤬🎙️
linux·github
vibecoding日记2 天前
为什么我就想要「线性历史 + Signed Commits」,GitHub 却把我当猴耍 🤬🎙️
git·编程工具
十日十行2 天前
Linux和window共享文件夹
linux
木心月转码ing2 天前
WSL+Cpp开发环境配置
linux