用 Git 在 Android 和 Windows 间同步 Obsidian 数据库
Matrix 首页推荐
Matrix 是少数派的写作社区,我们主张分享真实的产品体验,有实用价值的经验与思考。我们会不定期挑选 Matrix 最优质的文章,展示来自用户的最真实的体验和观点。
文章代表作者个人观点,少数派仅对标题和排版略作修改。
前言
如果你使用 Android 版 Obsidian,一个必须考虑的问题就是如何与电脑端同步笔记。
对此,诚然可以选择官方的 Obsidian Sync 服务,或者使用 Dropbox 等第三方同步工具,但我最推荐的还是使用 Git 同步。理由在于:
- 相比其他解决方案,Git 是开源的,不仅免费,而且安全性有保证;
- 作为最先进的分布式版本控制系统(没有之一),用 Git 可以方便地实现版本回溯和协同编辑等功能;
- Git 支持多种操作系统(Windows、macOS、Linux、Android、iOS),可以按需托管在国内外多家平台上(国外的 GitHub、GitLab,国内的 Gitee、CODING)。
当然,用 Git 同步的方案也有局限,包括有一定的学习成本,对纯新手不友好;多设备同时编辑容易产生冲突;以及需要另行手动备份存档等。
但瑕不掩瑜,Git 仍然是我在 Windows 桌面端和 Android 端同步 Obsidian 的首选。本文就为大家介绍我的具体实现方案。
(注:行文简洁起见,本文假定读者掌握命令行环境的基本操作,对于 Git 的功能和机制有初步了解。如果你不了解Git,那么本文食用起来可能会比较困难,不妨先通过廖雪峰的 Git 教程简单学习后再来尝试。)
Windows 桌面端的准备工作
第一步:安装 Git
在开始之前,请确保自己的 Windows 系统中已经安装了 Git。如果还没有安装,可以参考廖雪峰的教程。如果你已经安装了,那么可以跳过这一步。
第二步:在 Git 托管平台中新建仓库
接下来,我们在自己选用的 Git 托管平台上新建一个笔记专用仓库。
考虑到国内用户的访问便捷程度和中文支持,本文将主要使用国产服务 Gitee 演示(官网注册链接),并简单说明更为主流的 GitHub 平台的对应操作。
- 如果使用 Gitee:在顶部导航条点击「+」>「新建仓库」,根据提示填写信息即可(暂不勾选给出的初始化选项)。
- 如果使用 GitHub:在顶部导航条点击「+」>「New Repository」,根据提示填写信息即可(暂不勾选给出的初始化选项)。
第三步:生成 SSH 密钥
接着,我们需要生成一个 SSH 密钥(SSH Key),用于在本地和远程 Git 仓库同步时验证身份。
方法一:自动配置
为方便新手用户,我准备了一个配置脚本,按照如下步骤运行即可完成配置:
- 创建一个空白的 txt(后缀为
.txt
)文档; - 将下面的代码复制粘贴到上面的空白文档中,将其中标注的用户名、邮箱等信息修改为你自己的相应信息,然后保存;
- 修改文档后缀为
.sh
并保存,双击执行脚本。
#!/bin/bash
splitLine="====================================================="
userName="这里改成你的用户名"
email="这里改成你的Email"
# 配置 git 用户名和邮箱
git config --global user.name ${userName}
git config --global user.email ${email}
git config --global --list
echo "Enter 或者 y 键确认"
ssh-keygen -t rsa -C "${email}"
# 打印公钥
echo "复制保存下面的公钥添加到远程仓库"
echo ${splitLine}
cat ~/.ssh/id_rsa.pub
echo ${splitLine}
echo "按任意键退出"
read -n 1
echo "继续运行"
注意:
- 如果你本地之前生成过 SSH,那么脚本会提示你是否覆盖,此时输入
y
回车即可。 - 如果操作中途不小心关掉了脚本窗口,不要慌,双击重新执行脚本即可。
- 执行过程中会出现如下图所示的四次提示确认步骤,简单起见,建议大家直接回车不设置参数(当然如果你明白这些步骤的具体含义,也可以设置需要的参数)。
脚本执行完后,将分割线里面的内容复制出来保存好。后面会用到。
方法二:手动配置
如果你希望自己动手完成配置过程,下面介绍手动配置方法,这与前述脚本是等效的。
在空白位置点击鼠标右键,选择 Git Bash(或者用你习惯的其他终端模拟器,如 Windows Terminal 等访问 Bash 亦可):
在弹出的 Bash 窗口中,输入下面的命令配置用户名:
git config --global user.name 你的用户名
以及用下面的命令配置邮箱:
git config --global user.email 你的邮箱
完成前两步后,可以用下面的命令检查是否配置成功:
git config --global --list
如下图所示,如果返回的结果正确显示了你输入的用户名和邮箱,说明配置是正确的:
接着,输入下面的命令生成 SSH Key。参考上面脚本教程的截图,按四个回车即可。
ssh-keygen -t rsa -C "你的邮箱替换中文"
最后,用如下命令显示生成的公钥,将其复制出来备用:
cat ~/.ssh/id_rsa.pub
第四步:上传 SSH 公钥
下面,我们将生成的 SSH 公钥上传至 Git 托管平台。
- 对于 Gitee:点击导航栏右上角头像,选择「设置」,然后在侧边栏菜单选择「SSH 公钥」,填入上一步保存的公钥内容并保存确认。
- 对于 GitHub:点击导航栏右上角头像,选择「Settings」,然后在侧边栏菜单选择「SSH and GPG keys」,填入上一步保存的公钥内容并保存确认。
第五步:配置本地 Obsidian 仓库
下面,我们在本地配置用于同步的 Obsidian 笔记文件夹。
从 Gitee 或 GitHub 网页端访问刚才新建的仓库,由于尚未初始化,网页上会展示下图所示的配置指引:
这里,我们按其中的「创建 Git 仓库」一节配置。
具体而言,进入你用作 Obsidian 笔记库的文件夹,进入后在空白处点击右键进入 Bash,依次执行如下命令:
touch README.md
git init
git add README.md
git commit -m "first commit"
git branch -M main
git remote add origin "替换为上图中本条命令位置提示的远端地址(形如 [email protected]:user/repo.git)"
git push -u origin main
第六步:配置 Git 仓库同步
完成了本地仓库的配置,接下来要解决的就是在本地和远端之间推送和拉取笔记文件。这里,固然可以定期、手动通过命令行的 git
命令来同步,但那未免繁琐。
笔者惯用的方式是使用 GitKraken。这是一款免费、图形界面的 Git 管理工具。
安装后,先点击左上角的文件夹图标,选择本地 Obsidian 笔记库打开。然后即可通过工具栏按钮快捷地同步,或者在主界面中追踪同步历史等。
除了用 GitKraken 外,你也可以通过 Obsidian Git 插件,直接在 Obsidian 内部完成仓库的同步。
Android 端的准备工作
Android 端的配置相对简单,除了 Obsidian app,只需要另外安装一个 Git 客户端即可。
这里,我推荐使用 MGit,它是笔者能找到的最符合个人需求的 app;其他的如 GitJournal 等 app 多少有些小问题。如果你有更好用的推荐,欢迎在评论区分享。
MGit 的配置步骤如下:
- 在设置界面的「repos 的根存储位置」拟用于存放 Android 设备上 Obsidian 笔记的路径:
- 在设置页面,点击「SSH Keys」>「+」,新建 SSH 密钥;
- 参考前面的方法,将生成的公钥上传到 Gitee 或 GitHub;
- 从 Gitee 或 GitHub 复制 SSH Remote 地址(即上述 Windows 配置部分第五步用到的地址,也可以在仓库主页面点击「下载/克隆」(GitHub 点击「Code」)查看),填入远程地址,点击克隆。
成功之后,打开 Obsidian for Android。一般来说,Obsidian自动扫描到你克隆到手机的工作空间。如果没有扫描到,那么手动从 Obsidian 进入上述步骤设置的仓库路径,用作工作空间即可。
结语
细心的朋友可能已经看出来了,就是 Obsidian 的工作空间在PC和手机上都是通用的。这方面要为 Obsidian 的开发团队点赞。
不过,个人不建议在手机端编辑文档。因为手机端屏幕太小影响体验和发挥,只负责查阅即可,编辑还是放到 PC 端比较好。
如果大家对本文方案有什么更好的建议,可以在评论区提出。
关联阅读:
> 下载少数派 客户端 、关注 少数派公众号 ,了解更妙的数字生活 🍃
> 想申请成为少数派会员?冲!
© 本文著作权归作者所有,并授权少数派独家使用,未经少数派许可,不得转载使用。