因为经常同时使用多台设备,我经常会遇到在一处写好文章,在另外一台设备继续使用 logseq 的问题。直接复制粘贴显得很笨。
我大概分了两个阶段处理这个问题。第一个阶段是用移动硬盘,在不同系统之间直接拷贝。这个时候用到 git bare repository.
Stage 1
git init --bare logseq-database.git
然后再其他的 working git repository 上,添加 remote。例如我的磁盘路径是E:\
。
git remote add origin E:\logseq-database.git
如此一来可以直接在不同设备之间同步 logseq 数据。
Stage 2
我发现使用移动硬盘还是不太方便。我将一台10年前的 thinkpad 刷机,安装了 gitea。我一开始使用的是 gogs,但是 gogs 对于 submodule 处理不太友好,有莫名其妙的 bug。因此最终还是
使用了 gitea。使用 gitea 之后,我将原本的 git 库迁移到自己的本地机器上。例如:http://gitea.local/svtter/logseq-database.git
。
Stage 3
我发现大型文件存储和共享容易出问题。我增加了 git-lfs
的支持,通过
git lfs install
以及
git lfs track *.pdf
来避免大文件在.git
目录中留下太多的数据。
Stage 4
定期备份一部分数据到GitHub
。但是我现在一般不这么做了。
使用 git 在合并的时候要注意一个问题。如果文件名称有变化,自动化的合并会直接忽略。 大概是这样:我在两个设备上同时修改了一个文件,其中一个文件不仅仅是修改了内容,还更改了文件名。然后,两个设备分别进行了 git commit。 如此一来,git在进行合并的时候,不会提示冲突。git 自动化合并之后,其中一个设备上所作的修改会消失。
针对这个问题,处理方法是在合并的时候尽可能采用 rebase 的方法。==> 但是 rebase 合并文件的时候速度很慢,要自己手动处理的内容很多。
因此,在两个设备上同时修改一个文件的时候,首先要拉一下远端的修改。其次,应尽可能避免修改文件名。否则,可能会导致变更消失。
好在 git commit 历史记录一直都在。实在不行,就从 commit 记录里找到丢失的部分,然后补充一个新的提交。