关于 Obsidian 同步这件事,似乎总能让人感到头疼。同步方案不是太少,而是太多。多到你难以辨别哪种方案是最合适自己的。而且有不少同步方法是未经验证的,一些想当然的方案其实并不适合 Obsidian。
这篇文章我想先聊聊 PC 之间的 Obsidian 库同步。也就是不论系统,可以在 Windows、macOS、Linux 之间稳定完成同步的方法:Git 同步方案。
准备工作
在开始之前,确保你已经安装了Git和Obsidian软件。接下来,我们将一步步进行配置。
创建Git仓库
首先,选择一个Git平台作为仓库托管,这里我们以GitHub为例。如果你还没有GitHub账号,请先在GitHub官网注册一个账号。
- 登录GitHub账号,点击右上角的“+”按钮,选择“New repository”。
- 填写仓库名称,选择公开或私有,其他设置保持默认,点击“Create repository”。
将仓库同步到本地
你可以使用命令行或图形化工具,这里我们介绍使用GitHub Desktop。
- 下载并安装GitHub Desktop。
- 打开GitHub Desktop,登录你的GitHub账号。
- 点击“File”菜单,选择“Clone repository”。
- 选择你刚创建的仓库,选择本地存放位置,点击“Clone”按钮。
合并Obsidian库和Git仓库
- 打开Obsidian软件,找到你想同步的笔记库所在的文件夹。
- 将笔记库文件夹(包括隐藏的 .obsidian 文件夹)复制到刚刚克隆的Git仓库文件夹中。
- 使用GitHub Desktop提交和推送至远程仓库
安装Obsidian Git插件
- 在Obsidian中打开刚刚合并的仓库文件夹。
- 点击左侧导航栏的插件图标。
- 在插件搜索框中输入“Obsidian Git”并安装。
安装 Obsidian Git 插件进行后续的同步
接下来你需要进 Obsidian ,打开这个转移好的目录,并在这个库中,安装一个名为 Obsidian Git 的插件。
安装完成后应该会自动出现一个 Git Control View 的侧边栏。如果没有,则按下 Ctrl + P,搜索 Obsidian Git: Open Source Control View
,就可以打开这个面板。
有了这个插件,以后的同步操作你都可以在 Obsidian 内部进行了。
这个插件顶部的按钮对应了 Git 中最常见的几个操作。如果你对 Git 有一定的了解,应该对这些操作不会陌生。
- Backup:备份,提交所有的更改,并且执行推送。
- Commit:确认提交,但不推送。
- Stage all:存储当前的变更。
- Unstage all:取消存储变更。
- Push:推送到远端,可以理解为推送到 Github。
- Pull:从远端拉取到本地,可以理解为从 Github 拉取最新数据到本地。
- Change Layout:改变下方文件的排布方式。
- Refresh:刷新当前的文件变更情况。
如果你不想了解他们具体是干什么的,只想知道怎么做同步,那其实就两个按键有用:
- Backup,第一个按钮,一次性完成提交并推送到 Github。
- Pull,第六个按钮,从 Github 同步到本地。
到这一步就完成了所有的配置工作,第一次使用时,点击 Backup 就可以。
补充:初次使用 git 时出现报错的解决方法
有读者提到,如果此前从未使用过 git ,直接使用 Github Desktop 进行同步是可行的。
但此时打开 Obsidian 会提示两个错误:
这两个错误的意思分别是:没有指定分支、没有读取到用户名。所以这是一个账号设置错误。
至于在 Github Desktop 中能够正常使用,在 Obsidian 中却不行。究其原因,是因为授权方式是通过 Github 的账号密码进行登录的。而 Obsidian 用的是命令行,采用的授权方式不同,导致只有 Obsidian 无法访问 Github。
所以解决方法如下:
- 打开终端,输入
cd 存储库位置
,比如cd D:\ObsidianLibrary
来打开存储库。 - 输入
git remote show origin
来检查当前分支情况,依据更详细的报错,可以解决第一个问题。
git remote show origin
- 如果此时尚未登陆,应该会弹出一个登录窗口,提示进行登录,此时输入“账号 + 令牌”,就可以完成登录了。注意这个时候的令牌与密码不同,要用 Github 的个人访问令牌登录。参考文档《创建个人访问令牌》[2|2] 就可以生成令牌。
你也可以直接使用以下命令来设置全局身份。
git config --global credential.helper store
这行命令的作用是在 git 中全局启用凭证存储,启用后第一次 git clone
或者 git push
时会提示你输入“账户 + 令牌”。之后执行 git 操作都不再需要密码。
更多的配置
如何启用自动同步
刚开始使用时,你也许不习惯每次手动点一下 Pull 按钮。
那你可以在 Obsidian Git 插件里启用选项 Auto Backup after file change
,让它每隔一段时间自动进行同步,默认是 10 分钟进行一次推送。下面有一个 Auto pull
的选项,默认 10 分钟进行一次拉取。
如何解决文件同步冲突?
如果你在一台电脑上改动了文件,但是忘记同步了,并且在自动同步之前关机了。然后继续在另一台电脑上修改了同一个文件,那么回到这台电脑上做同步时就有可能发生冲突了。
此时你可以选择自己手动解决这些冲突,在 Obsidian Git 界面中,每次提交时都会告诉你这些文件发生了哪些变化。
由于 Git 的应用非常普遍,如果出现了其他报错,根据报错提示进行搜索,往往可以在搜索引擎中找到答案。
不想同步布局和某些配置怎么办?
通过调整 Git 仓库目录下的隐藏文件 .gitignore
文件,可以选择不同步某些文件。
根据 Obsidian 的官方文档,他们建议你在 .gitignore 中添加 .obsidian/workspace
。
如果你已经同步了,那就输入这行命令,这会从仓库中删除文件,未来也不再同步到仓库里,但保留本地文件。
git rm .obsidian/workspace --cached
自动同步和解决冲突
你可以在Obsidian Git插件设置中启用自动同步选项,定期自动进行备份和拉取。
如果在多台设备上同时修改了同一个文件,可能会出现冲突。Obsidian Git插件会提示你哪些文件发生了变化,你可以手动解决这些冲突。
文件变动Timeline和其他配置
如果想查看文件变动的时间线,你可以使用VSCode软件,打开Obsidian仓库所在的文件夹,然后在VSCode的左侧文件目录下方找到“Timeline”功能,以查看每个文件在每次Git提交中的变化情况。
如果你不想同步某些文件,可以通过在Git仓库目录下的.gitignore
文件中添加文件路径来实现。例如,添加.obsidian/workspace
以忽略同步工作区文件。
如何查看文件变动 Timeline
Obsidian 的 Obsidian Git 插件,主要作用是进行提交、拉取、推送这些操作。只能列举某次提交产生的所有变化,不能直观地看到单个文件变动的历史情况。
VSCode 内置了一个非常方便的功能:Timeline,它可以清晰的看到每个文件在每次 Git 提交中的变化情况。
你可以在 VSCode 中打开 Obsidian 仓库,在左侧文件目录下方找到“时间线”,就可以回顾这个文件经历了哪些版本了。
小结
使用Git实现Obsidian的稳定同步方案需要进行一些准备工作,但它能为你提供可靠的版本管理和同步功能。通过Obsidian Git插件,你可以在Obsidian中轻松地进行备份和同步操作,同时也可以通过VSCode的Timeline功能查看文件的变动历史。无论是个人使用还是团队协作,Git都是一个强大的工具,能够帮助你更好地管理和同步Obsidian笔记库。