← [ BACK_TO_NOTES ]

Obsidian 同步、版本控制与发布架构

区分 Obsidian Vault 的多设备同步、版本历史/备份、公开发布和站点部署四个不同问题,并把 Git、同步服务、Quartz 与 Digital Garden 放回各自职责。

#obsidian #synthesis #evergreen

[!info] related notes

Obsidian 同步、版本控制与发布架构

一句话关系

Obsidian 工作流里最容易混在一起的四件事是:

Sync
≠ Version History / Backup
≠ Publish
≠ Hosting / Deployment

它们可以用同一个 Git 仓库串起来,也可以完全使用不同系统。

第一层:Vault Source of Truth

真正编辑的 Markdown Vault 是源数据。

Vault
├─ Markdown
├─ assets
├─ frontmatter
├─ wikilinks
└─ .obsidian configuration

所有同步、Git、发布系统都应该围绕 Vault 服务,而不是反过来让某个网站构建产物成为新的主数据。

第二层:多设备同步

同步回答:

设备 A 改完文件后,设备 B 怎样得到同一份最新文件?

可以由:

  • 专用同步服务;
  • 文件同步/云盘;
  • Git pull/push;
  • 其他 replication 工具;

承担。

同步关注:

  • 冲突;
  • 离线修改;
  • 大文件;
  • 延迟;
  • 多端可用性。

它不自动等于可靠备份。

第三层:版本控制与备份

版本控制回答:

某次错误修改之后,能否知道发生了什么并恢复?

Git 很适合 Markdown Vault:

working tree
→ commit history
→ remote copy

但:

  • Git remote 不是完整灾备;
  • 自动 commit 不等于零冲突;
  • 二进制大文件要单独设计;
  • 多设备同时编辑仍可能产生 merge conflict。

具体操作统一看 Obsidian Git 插件指南。

第四层:公开发布

发布回答:

Vault 中哪些内容应该成为别人可以访问的站点内容?

这是一个 projection 问题:

Private Vault
→ selection / transform
→ public content

最重要的边界是:

私有 Vault 不应该因为“同步方便”就自动等于全部公开。

发布层需要明确:

  • public/private selection;
  • frontmatter;
  • wikilink 转换;
  • attachment handling;
  • draft;
  • secret scanning。

第五层:构建与 Hosting

如果使用静态站点:

Markdown
→ static-site build
→ HTML/CSS/JS
→ hosting/CDN

Quartz、MkDocs 等位于 build/publishing pipeline。

GitHub Pages、Cloudflare Pages、Vercel 或自己的 Web Server 则更接近 deployment/hosting。

“用 GitHub”本身不能说明你是在:

  • 同步;
  • 备份;
  • CI build;
  • hosting;

哪一层。

为什么旧的“完整方案 / 简化方案 / 企业方案”不稳

把方案直接命名成:

新手方案
专业方案
企业方案

很容易过期。

更稳定的选择方式是先看需求矩阵:

需求主要问题
两台电脑编辑同一 VaultSync
恢复昨天误删的段落Version history
云端再保留一份副本Backup
公开部分知识笔记Publish
自定义知识站 UIStatic build
自定义域名/HTTPS/CDNHosting

然后分别选工具。

三种常见组合

组合 A:只同步,不公开

Vault
→ sync
→ other devices

适合纯私人知识库。

无需为了“看起来完整”再加 Quartz 或 Digital Garden。

组合 B:Git 同步/版本 + 静态发布

Vault
→ Git
→ CI
→ Quartz/MkDocs build
→ hosting

优势是 Markdown 与版本历史清楚。

代价是:

  • merge conflict;
  • CI/build 维护;
  • public/private filter 要明确。

组合 C:私人同步 + 独立发布投影

Vault
├─ private sync
└─ selected public notes
    → publish pipeline

这是比较清晰的隐私边界:

同步全库与发布部分内容使用不同控制面。

多设备冲突模型

Git 类同步最常见错误是:

Device A edit
Device B edit
A push
B push without pulling
→ conflict / rejected push

更稳的纪律:

pull/reconcile
→ edit
→ commit
→ push

自动化可以减少操作,但不能消除并发写入语义。

发布流水线最小模型

Authoring Vault
→ public selection
→ build validation
→ generated site
→ deploy
→ smoke check

如果 build 失败,应该修源内容或构建规则,而不是手工修改 generated HTML。

选择检查表

开始配置前回答:

  • 需要几台设备编辑?
  • 手机是否需要完整写入能力?
  • 是否要求 Git history?
  • 是否有大附件?
  • Vault 是否包含隐私内容?
  • 发布全部还是白名单内容?
  • 是否需要 WikiLink / backlink / graph?
  • 是否接受 CI/build 维护?
  • 是否需要自定义域名?
  • Source of Truth 明确在哪里?

常见误区

Sync = Backup

错误。

同步系统可能把“误删”同样快速同步到其他设备。

Git = 实时同步

Git 是版本控制模型,可以被用来同步,但天然不是实时 collaborative filesystem。

Publish = Sync

Digital Garden / static publish 面向阅读者,不应承担多设备编辑的一致性。

网站仓库 = Vault

如果构建产物和源 Markdown 混在一起,后续很容易出现双向漂移。

学习检查

不看正文回答:

  1. Sync、Version History、Backup、Publish、Hosting 分别解决什么?
  2. 为什么一个 GitHub 仓库可能同时参与多个层,但这些层仍不能混为一谈?
  3. 为什么同步不等于备份?
  4. 私有 Vault 全量同步与公开部分笔记之间应该怎样建立边界?
  5. Static generator 与 hosting provider 为什么不是同一个对象?
  6. 给一个“Windows + 手机编辑,部分笔记公开”的场景,画出 source、sync、version、publish、hosting 五层。
  7. 如果网站构建失败,为什么不应该直接编辑生成后的 HTML?
创建于 2025/12/8 更新于 2026/9/30
Digital Biome
Access

键盘导航

j / k / ↑ / ↓
选择对象
Enter / o
打开选择
/ 或 Ctrl+K
全站搜索
i / f / 1–4
筛选当前列表
g → h / l / p / t / a
首页 / 笔记 / 项目 / 工具 / About
r → 1–9
打开所选对象的关联
u
返回上一页
Esc
关闭浮层 / 取消命令;输入框内清空文本