本指南帮助您安全地将博客更新到上游最新版本,同时保留所有个性化配置。
按照以下流程操作,您可以:
- ✅ 获取 NotionNext 的最新功能和修复
- ✅ 保留您的个人配置(头像、标题、域名等)
- ✅ 安全处理可能的代码冲突
⚠️ 本指南适用于 Vercel 部署场景,其他平台未测试。
本策略参考 NotionNext 官方升级教程 中的建议,使用双分支管理模式。
| 分支 | 用途 | 更新策略 | 部署状态 |
|---|---|---|---|
main |
同步上游原始代码 | 快进合并 | 不部署 |
deploy |
生产环境代码 | 合并 main + 保留个性化 | Vercel 自动部署 |
feature/* |
功能开发 | 基于 deploy 创建 | 不部署 |
GitHub Fork Repository
├── main (同步 tangly1024/NotionNext)
├── deploy (生产分支 → Vercel)
└── feature/* (开发分支)
在 Vercel 中将生产分支设置为 deploy:
- 登录 Vercel Dashboard
- 进入你的 NotionNext 项目
- 点击 Settings → Git
- 找到 Production Branch 设置
- 将默认的
main改为deploy - 保存设置
💡 这样配置后,只有
deploy分支的更新会触发生产环境部署,main分支仅用于同步上游。
# 添加上游仓库
git remote add upstream https://github.com/tangly1024/NotionNext.git
# 验证配置
git remote -v预期输出:
origin https://github.com/[你的用户名]/NotionNext.git (fetch)
origin https://github.com/[你的用户名]/NotionNext.git (push)
upstream https://github.com/tangly1024/NotionNext.git (fetch)
upstream https://github.com/tangly1024/NotionNext.git (push)
⚠️ 如果没有看到 upstream 行,说明上游仓库未成功添加
更新前先了解你的个性化修改:
# 查看个性化修改文件列表
git diff --name-only main..deploy常见个性化文件:
blog.config.js- 博客配置public/avatar.png- 头像public/favicon.ico- 网站图标pages/_app.js- 全局脚本.env.local- 环境变量
# 1.1 切换到 main 分支
git checkout main
# 1.2 拉取本地最新(防止多设备不同步)
git pull origin main
# 1.3 获取上游更新
git fetch upstream
# 1.4 合并上游代码
git merge upstream/main
# 1.5 推送到自己的仓库
git push origin main# 2.1 切换到 deploy 分支
git checkout deploy
# 2.2 【重要】同步远程 deploy 分支
git pull origin deploy
# 2.3 合并 main 分支的更新
git merge main如果出现冲突,根据文件类型处理:
| 文件类型 | 处理策略 | Git 命令 |
|---|---|---|
yarn.lock |
接受上游版本 | git checkout --theirs yarn.lock |
blog.config.js |
手动合并 | 保留个人配置,添加新配置项 |
public/avatar.png |
保留本地版本 | git checkout --ours public/avatar.png |
public/favicon.* |
保留本地版本 | git checkout --ours public/favicon.* |
处理完成后:
# 添加已解决的文件
git add .
# 提交合并
git commit -m "merge: 同步上游更新
- 保留个性化配置
- 解决冲突文件: [文件列表]"# 4.1 清理并重新安装依赖
rm -rf node_modules
yarn install
# 4.2 本地测试
yarn dev
# 访问 http://localhost:3000 确认正常
# 4.3 构建测试
yarn build
# 4.4 推送到远程
git push origin deploy项目提供了自动化更新脚本 scripts/update.sh,功能包括:
- 前置条件检查
- 自动备份配置文件
- 分支同步与合并
- 安全冲突处理
- 依赖更新
# 赋予执行权限(首次)
chmod +x scripts/update.sh
# 执行更新
./scripts/update.sh脚本会引导你完成整个更新流程,遇到需要手动处理的情况会给出明确提示。
# 查看提交历史
git log --oneline -10
# 回滚到指定版本
git reset --hard [commit-hash]
# 强制推送(谨慎使用)
git push origin deploy --force-with-lease如果误操作覆盖了代码,可以从 Vercel 的部署历史中恢复:
- 登录 Vercel Dashboard
- 进入项目 → Deployments
- 找到正常的历史部署,点击右侧三个点
- 选择 "View Source" 查看当时的源代码
- 点击右上角可跳转到 GitHub 对应版本
问题:推送后 Vercel 构建失败
解决方案:
- 检查 Vercel 构建日志定位具体错误
- 如果是依赖问题:
rm -rf node_modules yarn.lock yarn install git add yarn.lock git commit -m "fix: 重新生成 yarn.lock" git push - 如果是环境变量问题:检查 Vercel Dashboard → Settings → Environment Variables
问题:合并时出现大量冲突,难以处理
解决方案:
# 中止当前合并
git merge --abort
# 查看上游最近的提交
git log upstream/main --oneline -20
# 分步合并(先合并较早的提交)
git merge [earlier-commit]
# 解决冲突后继续合并下一个问题:推送时提示 rejected
解决方案:
# 先拉取远程更新
git pull origin deploy --rebase
# 解决可能的冲突后推送
git push origin deploy- 更新频率:建议每 1-2 周检查一次更新,重要安全更新应立即处理
- 备份重要文件:更新前备份
blog.config.js和其他个性化配置 - 测试验证:更新后务必在本地测试,确认功能正常再部署
- 记录修改:建议维护一份个性化修改清单,便于后续更新
文档版本:0.1.0 | 最后更新:2025-08-19