用 Git 同步 Obsidian:多设备轻量方案
多台设备同时用 Obsidian,核心问题只有一个:
怎么让同一个 Vault 稳定同步、保留版本历史,并能随时加新设备。
本地 Vault + GitHub Private Repository + Obsidian Git
整个架构很简单:
Mac 本地 Vault Windows 本地 Vault Linux / 任意台
↕ ↕ ↕
└────── GitHub Private ──────┘GitHub 只负责同步和版本管理,真正工作的文件始终保存在本地。
一、为什么选 Git
这个方案主要适合以下场景:
-
Vault 以 Markdown、JSON、YAML、图片为主
-
已经会用 Git / GitHub
-
会用 Codex、Claude Code、VS Code 等工具直接操作 Obsidian 文件
-
希望除了同步,还能保留完整修改历史
-
不需要两台设备同时编辑同一篇笔记
-
设备数量不固定:想加几台加几台
相比网盘同步,Git 有几个明显优势。
1. 所有文件始终在本地
Mac:
~/Documents/Obsidian/MyVaultWindows:
D:\Obsidian\MyVaultLinux:
~/Documents/Obsidian/MyVaultObsidian、Codex、VS Code 都直接操作本地文件,不需要处理云盘占位文件和下载状态。
2. 同步之外,还有版本历史
每次修改都会形成 Commit。
以后文章被 AI 改坏了,或者想找回几天前的版本,可以直接回滚。
3. Markdown 天然适合 Git
Obsidian 的核心文件都是纯文本:
.md
.json
.yaml
.css
.js即使产生冲突,也比 Word、PPT、Excel 更容易处理。
二、整体架构怎么设计
建议创建一个 GitHub Private Repository,例如:
obsidian-vaultVault 本身保持正常目录结构:
MyVault/
├── 00 Inbox/
├── Notes/
├── Projects/
├── Articles/
├── Resources/
├── Templates/
├── assets/
├── AGENTS.md
├── .obsidian/
├── .gitignore
└── README.md其中 GitHub Repository 设置为:
PrivatePrivate 仓库负责:
跨设备同步
+
版本历史
+
远程备份但不要把 Private Repository 当密码保险箱。
以下内容建议永远不要提交:
API Key
Token
密码
证书
.env
公司高度敏感资料三、具体怎么配置
1. Mac 初始化
假设现有 Vault 在:
cd ~/Documents/Obsidian/MyVault初始化:
git init
git branch -M main关联 GitHub:
git remote add origin git@github.com:YOUR_NAME/obsidian-vault.git第一次提交:
git add .
git commit -m "init obsidian vault"
git push -u origin main2. 其他设备拉下来
每台新设备流程一样,台数不限:
git clone git@github.com:YOUR_NAME/obsidian-vault.git例如放到:
Windows D:\Obsidian\MyVault
Linux ~/Documents/Obsidian/MyVault然后:
Obsidian
→ Open folder as vault
→ 指向对应本地路径至此,新设备接进同一套同步。
3. .obsidian 不要全部忽略
不建议直接:
.obsidian/否则 Mac 和 Windows 的插件、主题、快捷键会逐渐不一致。
建议同步:
.obsidian/plugins/
.obsidian/themes/
.obsidian/snippets/
.obsidian/hotkeys.json
.obsidian/appearance.json但忽略设备相关状态:
# Obsidian workspace
.obsidian/workspace.json
.obsidian/workspace-mobile.json
.obsidian/cache/
# Trash
.trash/
# macOS
.DS_Store
# Windows
Thumbs.db
Desktop.ini
# Secrets
.env
.env.*
*.key
*.pem
secrets/
credentials/
# Temp
*.tmp
*.temp一个简单原则:
同步配置,不同步现场。
插件、主题、快捷键同步。
当前打开哪些页面、窗口位置,不同步。
4. 用 Obsidian Git 自动化
手动同步需要:
git pull
git add .
git commit
git push长期使用会比较烦,所以可以安装 Obsidian Git 插件,每台设备都装,配置相同。
建议配置:
Pull on startup
开启
Auto Commit
10~20 分钟
Auto Push
开启
Commit-and-Sync
开启这样日常流程变成:
打开 Obsidian
↓
自动 Pull
↓
正常写笔记
↓
自动 Commit
↓
自动 PushGit 基本退到后台。
四、真正需要遵守的规则
这套方案其实只需要记住几条。
规则一:换设备,先 Pull
例如:
设备 A 写完
↓
Push
换设备 B
↓
Pull
↓
开始写不要:
设备 A 没 Push
↓
设备 B 又修改同一个文件否则容易冲突。
规则二:不要过度自动 Commit
没必要每分钟提交一次。
推荐:
10~30 分钟或者完成一个阶段之后提交。
好的 Commit:
Update AI workflow article
Add Git sync notes
Update project research而不是:
backup 10:01
backup 10:02
backup 10:03Git History 本身也应该有可读性。
规则三:知识库和公开博客分开
整个 Vault 建议保持 Private:
obsidian-vault
Private博客单独一个仓库:
blog
Public架构:
Obsidian Vault
Private
│
↓
筛选需要发布的文章
│
↓
Public Blog Repo
│
↓
Cloudflare Pages不要直接把整个 Obsidian Vault 暴露给博客系统。
以后可以进一步用 Skill 或脚本自动完成:
Obsidian 文章
↓
复制 Markdown
↓
处理图片
↓
生成 Front Matter
↓
同步 Blog Repo
↓
Git Push
↓
Cloudflare 自动发布最终这套结构其实很简单:
GitHub Private
↑ ↓
┌──────────┬──────────┴──────────┬──────────┐
↓ ↓ ↓ ↓
Mac Obsidian Windows Obsidian Linux/更多台 Obsidian
↕ ↕ ↕
Codex / CLI Codex / CLI Codex / CLI
↓
Public Blog Repo
↓
Cloudflare Pages每个工具只负责一件事:
Obsidian: 写和组织内容
Git: 管理变化
GitHub Private: 跨设备同步和备份
Codex: 直接操作本地知识库
Public Repo: 对外发布
如果本来就使用 Git,同时又希望 Obsidian 成为自己的本地 AI 工作空间,那么:
Local First + GitHub Private,是一套足够轻量、稳定,而且可以长期使用的方案。