通过git跨PC设备同步的技巧

目前logseq只能使用本地功能,可以通过网盘的方式进行多PC端同步,但是要求每个PC端都要联网
git的分布式版本管理可以让你以离线的方式提交每次更改,但是如果简单地在本地目录下初始化库来进行版本管理,多端合并时会发现有./root/logseq目录下.recycle,bak文件夹以及pages-metadata.edn等文件的冲突,很难直观合并
经过测试后发现,桌面客户端可以在删除./root/logseq目录的情况下通过重新建立索引来重新生成./root/logseq目录,而且不会因为重新建立索引而改变块引用的编码,对块的引用没有影响
所以只需要在root目录下建立一个.gitignore文件,写入“/logseq”忽略logseq文件夹,如果已做过提交,则通过git rm -r --cached ./logseq指令来删除已提交的./logseq目录内容
后续每次使用git合并在不同PC端的改动时,只需要对具体md文件内容的冲突进行合并,比较直观,推荐使用vscode查看冲突内容来选择性合并,合并后做一次提交,然后通过客户端重新生成索引即可正常使用

Cool ! 感觉可以提供一个 .gitignore 的推荐配置

补充一个我觉得很好用但没多少人提起的, desktop app 在本地目录使用了 git 的情况下, 可以使用 页面历史记录 功能浏览和 checkout 页面的 git 历史版本

我觉得这样其实是不合适的, config.edn 一起 logseq 文件夹下其他的其实也是需要的… 我个人是忽略 .recycle bak文件夹,但是会保留其他的文件.

1 个赞

对.recycle bak文件夹的忽略应该都没意见

config.edn是本地logseq设置,在重新建立索引时如果存在这个文件,则不会对其改动
但如果忽略了这个文件,会导致在新的PC端拉取git库重新建立索引后还需要根据个人重新进行配置
所以我也赞同保留这个文件,这不会带来不方便的地方

pages-metadata.edn文件在多端同步合并时我发现经常有冲突,也没有办法直观合并,有什么好的办法吗?

其他两个文件我还不清楚具体作用