如果习惯用 git 管理 obsidian 的库,那么可以使用 git submodule 在多个库之间同步皮肤、插件、配置等内容。
.obsidian 仓库
将 .obsidian
文件夹初始化成 git 仓库
cd .obsidian
git init
在 github 创建 .obsidian 仓库。建议作为私有仓库,名字不必要是 .obsidian
。
将得到的 github 仓库地址填入本地 .obsidian\.git\config
中:
[remote "origin"]
url = [email protected]:user/.obsidian.git
fetch = +refs/heads/*:refs/remotes/origin/*
创建 .gitignore
文件,排除只和本 Vault 有关的文件:
core-plugins.json
graph.json
workspace
workspaces.json
将仓库上传到 github:
git add .
git commit -m init
git push
这里可以把分支改成 main
,如果你喜欢这个新的「正确」的主分支名。
克隆子模块
把本地 .obsidian 文件夹中的 core-plugins.json、graph.json、workspace、workspaces.json 文件备份,然后删除 .obsidian 文件夹。
在库目录下执行子模块克隆命令:
git submodule add [email protected]:user/.obsidian.git .obsidian
将远程项目 [email protected]:user/.obsidian.git
克隆到本地 .obsidian
文件夹。
将备份的 4 个文件重新放回 .obsidian 文件夹中。
更新配置文件
当 A 库中的 .obsidian 中的文件变更后可以直接 commit 变更文件然后 push 到仓库。
然后在 B 库中执行更新子模块命令:
git submodule update --remote
克隆含有子模块的库
如果要在另一个设备上克隆库,子模块是不会自动克隆的。
通过查看子模块命令:
git submodule
- e312276d6efa3de586ee64a7cb61df6ea353f363 .obsidian
子模块前面有一个 -
,说明子模块文件还未检入。
初始化子模块:
git submodule init
也可以递归克隆子模块:
git clone https://github.com/user/Vault.git Vault --recursive