适用场景:当 Hugo PaperMod 主题发布了新版本,你需要将本地的
themes/PaperMod文件夹升级到官方最新版时。
1. 核心操作:勾选策略
在博客根目录,右键 -> TortoiseGit -> 子模块更新 (Submodule Update)。
请严格按照下图勾选(四项全选):
| 选项 (中文) | 选项 (英文) | 状态 | 核心理由 (Why) |
|---|---|---|---|
| 初始化子模块 | --init | ✅ 勾选 | 防漏。万一主题作者新增了内部依赖,这能保证配置被正确初始化,有备无患。 |
| 递归 | --recursive | ✅ 勾选 | 防套娃。如果 PaperMod 内部还引用了别的子模块,这个选项能一并更新,防止报错。 |
| 远端跟踪分支 | --remote | ✅ 勾选 | ⭐ 升级核心。只有勾选它,Git 才会去下载“最新版”。如果不勾,Git 只会将主题重置回你上次记录的旧版本(原地踏步)。 |
| 变基 | --rebase | ✅ 勾选 | 防冲突/保整洁。如果你不小心改动了主题里的文件,或者文件权限变了,“变基”能把你的改动“浮”在最新版之上,保持历史线是一条直线,比“合并(Merge)”更干净。 |
2. 关键后续:提交变更 (Commit)
点击“确定”并显示成功后,工作只完成了一半!
此时,你的博客主程序发现:“咦?themes/PaperMod 这个文件夹的内容变了(指向了新的 Commit ID)。”
必须执行以下操作,否则 Cloudflare 构建时依然是用旧版主题:
- 回到根目录:你会发现
themes文件夹上有红色叹号❗。 - 提交 (Git Commit):
- 右键根目录 -> Git 提交 (Commit)。
- 你会看到变更列表中只有一行:
themes/PaperMod。 - 填写日志:
Update PaperMod theme to latest version。 - 点击提交。
- 推送 (Git Push):
- 运行你的
deploy.sh或者手动推送。
- 运行你的
3. 技术辨析:为什么比 DeepSeek 多两项?
DeepSeek 建议只选 递归 + 远端,这在 90% 的情况下是能跑通的。但我建议多选两项的理由是:
- 为什么要加
Init?- 有些复杂主题可能会引入新的 Icon 库或字体库作为子模块。如果不选 Init,更新后可能因为缺文件报错。多选它没有任何副作用,只有安全感。
- 为什么要选
Rebase?- 默认情况下,
Submodule Update可能会尝试Checkout(检出)。 - 如果你在 Windows 下不小心修改了主题文件的换行符(CRLF问题),直接 Checkout 可能会失败或报错。
- 使用
Rebase是最强力的**“自动纠错”**手段,它能强行把更新应用上去。
- 默认情况下,
📝 极简口诀
“要升级,找小乌龟(TortoiseGit)。
初始化、递归、远端、变基,四个钩钩全打上。
更完别忘 Commit,否则白忙一场。”
把这篇存好,下次 PaperMod 更新时,照做即可! 🛡️🚀