适用场景:当 Hugo PaperMod 主题发布了新版本,你需要将本地的 themes/PaperMod 文件夹升级到官方最新版时。

1. 核心操作:勾选策略

在博客根目录,右键 -> TortoiseGit -> 子模块更新 (Submodule Update)

请严格按照下图勾选(四项全选):

选项 (中文)选项 (英文)状态核心理由 (Why)
初始化子模块--init勾选防漏。万一主题作者新增了内部依赖,这能保证配置被正确初始化,有备无患。
递归--recursive勾选防套娃。如果 PaperMod 内部还引用了别的子模块,这个选项能一并更新,防止报错。
远端跟踪分支--remote勾选⭐ 升级核心。只有勾选它,Git 才会去下载“最新版”。如果不勾,Git 只会将主题重置回你上次记录的旧版本(原地踏步)。
变基--rebase勾选防冲突/保整洁。如果你不小心改动了主题里的文件,或者文件权限变了,“变基”能把你的改动“浮”在最新版之上,保持历史线是一条直线,比“合并(Merge)”更干净。

2. 关键后续:提交变更 (Commit)

点击“确定”并显示成功后,工作只完成了一半!

此时,你的博客主程序发现:“咦?themes/PaperMod 这个文件夹的内容变了(指向了新的 Commit ID)。”

必须执行以下操作,否则 Cloudflare 构建时依然是用旧版主题:

  1. 回到根目录:你会发现 themes 文件夹上有红色叹号❗。
  2. 提交 (Git Commit)
    • 右键根目录 -> Git 提交 (Commit)
    • 你会看到变更列表中只有一行:themes/PaperMod
    • 填写日志:Update PaperMod theme to latest version
    • 点击提交。
  3. 推送 (Git Push)
    • 运行你的 deploy.sh 或者手动推送。

3. 技术辨析:为什么比 DeepSeek 多两项?

DeepSeek 建议只选 递归 + 远端,这在 90% 的情况下是能跑通的。但我建议多选两项的理由是:

  1. 为什么要加 Init
    • 有些复杂主题可能会引入新的 Icon 库或字体库作为子模块。如果不选 Init,更新后可能因为缺文件报错。多选它没有任何副作用,只有安全感。
  2. 为什么要选 Rebase
    • 默认情况下,Submodule Update 可能会尝试 Checkout(检出)。
    • 如果你在 Windows 下不小心修改了主题文件的换行符(CRLF问题),直接 Checkout 可能会失败或报错。
    • 使用 Rebase 是最强力的**“自动纠错”**手段,它能强行把更新应用上去。

📝 极简口诀

“要升级,找小乌龟(TortoiseGit)。
初始化、递归、远端、变基,四个钩钩全打上。
更完别忘 Commit,否则白忙一场。”

把这篇存好,下次 PaperMod 更新时,照做即可! 🛡️🚀