今天把obsidian的git同步解决了。分享以下过程以及遇到的问题。
Git同步
使用 github/gitee 同步自建也行
-
新建仓库:
-
在本地创建一个文件夹用于存放日记
-
CD 到新建的文件夹里。
-
输入下面指令
git init
-
在 obsidian 打开这个仓库(文件夹/vault)
-
复制 git 的 https 地址,在控制台刚才 cd 的文件夹里输入一下命令。
git remote add origin https://github.com/用户名/仓库名.git #正常不会提示什么,如果提示 error: remote origin already exists. #说明已经存在了。输入一下命令查看。 git remote -v #查看存在的根源文件 git remote remove origin #可以删除 然后一次输入以下命令,目的是创建master分支,以便后续push git add --all git commit -m "随便写" git push -u origin "master" #有些人的可能不是master,比如我的是main。替换一下
以上步骤完成后,输入用户名和密码后可能会出现一个错误
remote: Support for password authentication was removed on August 13, 2021. remote: Please see https://docs.github.com/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication. fatal: Authentication failed for 'https://github.com/xxxx/xxx.git/'
-
解决方案
-
使用个人访问令牌(Personal Access Token)
- 登录您的GitHub账号,点击右上角头像,选择Settings
- 在左侧边栏找到Developer settings
- 选择Personal access tokens,点击Generate new token
- 填写token描述,设置过期时间(Expiration),选择权限范围(建议至少勾选repo权限),自己用可以全选,无所谓。
- 点击Generate token按钮生成令牌
- 保存好生成的token(
这很重要,因为它只显示一次)
- 之后使用git push时,输入用户名和密码时,密码部分使用这个token
-
使用SSH方式(推荐,更方便)
- 生成SSH密钥对:
ssh-keygen -t rsa -C "您的邮箱"
按照提示操作,可以直接按回车使用默认设置
2. 将公钥添加到GitHub:
- 查看公钥内容:cat ~/.ssh/id_rsa.pub
- 复制公钥内容
- 登录GitHub,进入Settings → SSH and GPG keys
- 点击New SSH key,粘贴公钥内容并保存
3. 如果您已经使用HTTPS方式克隆了仓库,需要修改远程仓库URL:
git remote set-url origin [email protected]:您的用户名/您的仓库名.git
4. 如果是新仓库,直接使用SSH方式克隆:git clone [email protected]:您的用户名/您的仓库名.git
使用SSH方式后,您就不需要每次都输入用户名和密码了,这种方式更安全也更方便
-
-
我选择用 tokens 来登录。
git remote -v #查看存在的根源文件 git remote remove origin #删除之前增加的避免冲突 git remote add origin https://<tokens>@github.com/用户名/仓库名.git #这次在前面加了tokens 然后一次输入以下命令,目的是创建master分支,以便后续push git add --all git commit -m "随便写" git push -u origin "master" #有些人的可能不是master,比如我的是main。替换一下
如果出现下面这个提示
! [rejected] main -> main (fetch first) error: failed to push some refs to 'https://github.com/dongfox/Ob.git' hint: Updates were rejected because the remote contains work that you do hint: not have locally. This is usually caused by another repository pushing hint: to the same ref. You may want to first integrate the remote changes hint: (e.g., 'git pull ...') before pushing again. hint: See the 'Note about fast-forwards' in 'git push --help' for details. #依次输入 git fetch origin 下面选择合适的自己的 git pull origin main #如果您想将远程更改与本地更改合并:如果有需要解决的冲突,这可能会创建一个合并提交。 or git pull --rebase origin main #如果您更喜欢在远程更改之上重新应用您的更改:这样可以避免合并提交,但在rebase过程中可能需要解决冲突。 git push origin main
会看到文件上传合并的进度!
离成功差最后一个插件。
-
在 obsidian 里安装
可以愉快的同步Obsidian文件了。不过ios还需要购买working copy来应用。git一个还是不放心的话,可以搭配remotely save,livesync,还可以合租官网同步。
S3/R2更新
创建 Cloudflare 相关服务
使用 Cloudflare
- 注册Cloudflare 账号
- 用账号绑定支付的卡片(中国境内的 Visa、Master、AMEX 经过测试都可以,银联借记卡不太清楚,可以尝试一下。如果银联借记卡不行,可以通过 Cloudflare→绑 PayPal→绑境内借记卡实现)
申请 Cloudflare 的 R2
- 打开 https://dash.cloudflare.com/?to=/:account/r2/new
- 页面会要求你设置一个存储桶的名字,我这里输入了
obsidian-sync
(记住这个一会儿要用),你可以输入你想要的名字 - 下面的「位置」「默认存储类」保持默认
- 点击创建存储桶
图是最新cloudflare网页操作路径
获取存储桶的服务地址
- 打开刚刚创建的存储桶的详情页,记得中间的存储桶名字换成你刚刚起的名字 https://dash.cloudflare.com/?to=/:account/r2/default/buckets/ 这里换成你的存储桶名字 /settings
- 在这个页面找到「存储桶详细信息」-「S3 API」,你会找到一个形如 https://xxxxxxxxxxxxx.r2.cloudflarestorage.com/ 你的存储桶名字 的链接
- 复制这个链接,然后移除最后的名字部分 即:https://xxxxxxxxxxxxx.r2.cloudflarestorage.com 就是我们要的服务地址 (记住这个一会儿要用)
创建一个 Cloudflare API Token
- 打开 https://dash.cloudflare.com/?to=/:account/r2/api-tokens/create
- 这个页面上来会要求你起一个名字,名字随意,你能认出来就好
- 权限这里,选择「管理员读和写」,其他不变
- 点击创建 API 令牌
- 复制「访问密钥 ID」「机密访问密钥」(记住这个一会儿要用)
R2 Object Storage 里的 API - Manage API tokens - Create API token
在 Obsidian 里面使用
- 下载安装并启用 Remotely Save 插件
- 按下图的方式填入,没有提到的保持默认
3. PC 和移动端的同步移动端需要先安装并启动这个 Remotely Save 插件,Vaults 的名字要和 PC 上完全一样 在手机上粘贴 PC 生成的链接,点确定即可
- 还有一个插件 LiveSync 也可以使用 S3 ,但必须打开
使用自定义HTTP处理程序才能正常连接。
以上所有操作根据Lainbo博主进行操作和完善。
Webdav
同样也是用Remotely Save,选择webdav的选项
我是用的方案是注册infini-cloud,注册可以有20免费空间,需要输入邀请码还能获得5GB。在个人主页里面这个位置,Enter Friends Referral Code 输入SS3RV便能获得5GB.
在这个位置打开apps connection 就可以开启webdav了。
输入得到的dav地址还有id和密码就能正常连接了。
remotely save自建alist或者webdav,就是iOS系统安全协议原因,需要https的链接才能成功同步。暂时搁置了,等哪天想折腾了再更新补充。
暂时这些是常用的同步方式。刚意识到github有免费额度500mb,如果有服务器的话可以自己部署git,用github主要是可以看到所有修改的历史记录。
还有的方法是syncthing来进行p2p的传输,有服务器的话也会方便许多。当然也不能把所有的东西都同时部署到一个服务器上,那么安全性也会降低很多。我同时用这几个也是为了分开备份,加强安全。
当然还有onedrive,iOS独有的iCloud。手动备份到baidu云盘的本地映射。其他玩法大家自己探索,一起多多交流学习。