近期有一位读者提问:
我参考文章使用 Working Copy 进行 Obsidian 同步,其中 Link Repo 这一步在 iPhone 上是秒完成的,但是在 iPad 上一直卡转圈无法完成,请问是什么原因?
这里提到的参考文章是这两篇——
- Obsidian 的 PC 端同步方案,无代码搞定 Git 同步 - #UNTAG
- Obsidian 的手机端同步方案,iOS + Git + Shortcuts 实现自动同步 - #UNTAG
这个问题其实还挺常见的,这是因为 Git 仓库在 Working Copy 中不应该 Link Repo 到 iCloud 文件夹内,而应该存储到本机的文件夹(在文中有提到)。
我想有必要写一篇文章来讲讲 iCloud 和 Git 方案分别是怎么实现的,以及为什么不要同时使用。
当我们使用 iCloud 和 Git 时,分别在做什么?
直接用 iCloud 同步 Obsidian 时,Macbook 上编辑并保存文件后,iCloud 会将其实时同步到云端。当拿起 iPhone 时,文件又会实时同步到手机端,反之亦然。
其他云盘类的工具也大多遵循这个逻辑,比如 Dropbox、OneDrive。
用 Git 同步 Obsidian 时,Macbook 上编辑并保存文件后,需要通过 git push 把“这一批文件”一次性发送到 Github。当拿起 iPhone 时,需要通过 git pull 把“这一批文件”拉取到本地。
如果完全按照这篇文章的设置,Obsidian Git 和 Working Copy 都会帮我们自动完成 pull 和 push 操作,无需手动执行。
通俗地讲,总结起来就两点:
- iCloud 是实时同步的,你写完一个笔记,iCloud 就自动同步了。
- Git 操作,是电脑 push,手机 pull,才会同步过来。
一般来说,只要是单独使用这两种方案,都可以正常实现“同步”的需求。
但我也提到过“网盘实时同步的麻烦事”,网盘并不能很好地识别 Obsidian 关联修改文件的操作,可能会创建出一堆历史版本,影响正常使用。所以我更推荐仅使用 Git 方案。
为什么不要同时使用 iCloud 和 Git?
而在文章开头提到的读者疑问中。他既使用了 Git,又同步到了 iCloud 文件夹中。则相当于同时使用了 iCloud 和 Git 两种方案。
模拟一下这个场景:
- 你在 Mac 上编辑完文件,iCloud 立即同步,文件已经写到 iPhone 了。
- 此时你手动运行 Git push,数据写入了 Github。
- 当你打开手机 Working Copy,尝试自动为你执行 Git pull 。
- 此时 Working Copy 发现 iCloud 文件夹里已经有这个文件了。 如果两个文件一模一样,可能不会报错。 如果两个文件的修改时间出现不同,Git 和 iCloud 不一样了,就会报错,或者需要你手动解决冲突。在解决冲突前,不会执行 git pull 操作。
因此,总结出来的最佳实践如下:
- 选择一种同步方案使用,避免同时使用 iCloud 和 Git。这样可以减少同步冲突的风险,确保数据的一致性和完整性。
- 对于需要版本控制的场景,Git 是更优选择,因为它可以跟踪每次
