同步冲突:多端编辑同一页面怎么解决
冲突什么时候发生
当两台设备几乎同时修改了同一份数据时会发生冲突。具体场景:
- Logseq Sync:两台设备同时打开 Logseq 并编辑同一页
- Git:两台设备各自 commit 然后 pull 时发现差异
- 文件同步(iCloud/Syncthing):云盘同时收到两份不同的修改
预防:最重要的一条
同一时间只在一台设备上编辑 Logseq。其他设备上的 Logseq 关掉(或打开但不编辑),等主设备写完、同步完成后,再到其他设备打开查看(只读)。
这是最简单也最有效的冲突预防——两台设备同时写是冲突的根源。
冲突后的处理步骤
Logseq Sync 冲突
- Logseq 会弹出冲突提示框,列出冲突的块
- 提示每个块的两份修改(你这边的 vs 其他设备的)
- 逐个决定保留哪一份,或手动合并两边的内容
- 合并完成后点击「Resolve」→ 重新同步
Logseq Sync 的冲突处理相对友好——它是块级的,告诉你哪个具体块冲突了、两边分别改了什么。
Git 冲突
- 执行
git pull时发现冲突,Git 在文件里插入:
<<<<<<< HEAD
你的版本内容
=======
另一台设备的版本
>>>>>>> main
- 打开冲突文件,手动决定保留什么(通常两边都有用,把两边内容拼起来)
- 保存文件,
git add+git commit+git push
关键提示:不要用自动合并工具对 Markdown 文件做自动合并——Markdown 的缩进和列表结构很容易被自动合并搞坏。手动合并更安全。
文件同步工具(iCloud/Syncthing)冲突
- iCloud:会生成
文件名 (设备名).md副本,保留你这边的版本。打开两份,手动合并到主文件,删掉副本 - Syncthing:类似,会保留两份。Syncthing 的冲突处理更友好,会明确标注哪个设备什么时候改的
合并技巧
Markdown 合并时的原则:
- 缩进不变 — 不要破坏原有的
-/*缩进结构 - 两边都保留 — 如果两边都加了不同的子块,把两边子块都保留在正确的父块下
- 属性不冲突 — 属性是单行 key:: value,两边不会同时改同一个属性(一般不会)
- 链接检查 — 合并后打开页面,点一下几个关键链接,确保没断
冲突后数据安全
无论哪种同步方案,冲突都不会丢数据——最差情况是两边的内容被分开保存,你需要手动合并。即使最坏情况下合并错了、搞乱了,你还有:
- 上一次的 Git commit
- 文件同步工具的版本历史(Syncthing、坚果云等都有)
- Logseq DB 版本的历史快照(Settings → History)
定期完整备份永远是最底层的保险。