旧文章从语雀迁移过来,原日期为2022-10-22

思源笔记是一款优秀的本地优先的双链大纲笔记软件,拥有强大的笔记编辑功能且都是免费,唯一付费的就是云同步等一些服务了。但如果暂时还用不着云同步的,我们可以利用 Git 同步思源笔记。

优缺点

  • Git这套方案 和官方同步是有差异的,唯一优点就是免费,意味着你得包涵以下缺点:

    • 移动端

      • 移动端只能查看(我个人觉得移动端写笔记的场景很少,可以用语雀小记或者 flomo 来代替记录)
      • 移动端的同步有点麻烦,但总体是建立在很少使用的场景下
      • 只能在 Android(目前)
    • PC 端
      • PC 端使用思源笔记前,记得拉取一下笔记数据
      • PC 端使用思源笔记后,记得提交一下笔记数据
  • Git 和第三方云盘相比较,不用担心同步导致的错误问题(因为官方思源笔记不支持通过第三方同步盘进行同步),因为每次的同步都两个版本有差异你是需要手动解决冲突的,保证了备份的稳定性,而且 git 的记录方便回滚任意记录的笔记数据

开始

前置准备动作:

  • 本地已安装 Git
  • 有一个 GitHub 或 Gitee 的账号,建议 Gitee 国内速度稳定
  • 一台安卓手机

PC

  1. 打开思源笔记的 设置 ,选择 关于 找到 工作空间目录

  1. 在空间目录打开命令行工具,运行命令:
git init
  1. 添加 git 忽略文件(官方的目录只需同步 /data 目录,所以其他目录我们忽略掉)
/backup
/conf
/history
/sync
/temp
/corrupted
.DS_Store
  1. 在 Gitee 新建一个私有仓库,按照提示配置账户邮箱,增加远端仓库
# 配置名字和邮箱
git config --global user.name "xxx"
git config --global user.email "xxx@163.com" # 增加远程仓库
git remote add origin git@gitee.com:xxx/test.git
git push -u origin "master"
  1. 换到另一台电脑,你只需要通过 git clone 克隆下来,在思源笔记的 设置 ,选择 关于 找到 工作空间目录,切换到该目录即可。

完成上面的1-5步其实已经可以将思源笔记的数据进行备份了,可以实现家里和公司的笔记同步备份。

移动端

PC 很简单,移动端就比较麻烦了,移动端由于 Android11 开始不能编辑 Android/data 里面的数据(除非手机自己 root),但思源笔记的数据又是在其中,所以无法用第三方软件(如 folderSync)来同步。所以我们得换一种方式,通过在 设置 的通过 导入 数据实现,而且导入的格式为将 data 目录打包成 zip

MGit

对于安卓,我们可以通过 MGit 来实现 git 项目的下载,这个 app 的页面很简单,步骤是:

  1. 首先点击右上角图标进入设置,设置好存储位置

  1. 点击 添加远程地址和本地路径,克隆即可,过程会提示输入账号和密码(非 SSH)

  1. 将拉取的 data 目录,通过手机打包成 zip 格式
  2. 在思源笔记中的设置选取导入数据,选择第 3 步打包出来的文件
省略 zip 打包

后续每次移动端同步还是很麻烦,拉取下来需要手机打包工具 zip,最后还要选择导入,有没办法省略其中一些环节呢?有的,我们可以将这个打包过程前置到 PC 端提交数据时去做。

那我们不妨写一个脚本去做这个事情,在 PC 端的工作目录下新建一个 build.sh

#!/bin/bash

# 打包data并备份数据

# 变量
PACKAGE_NAME="data"
DATETIME=`date "+%Y-%m-%d %H:%M:%S"`
TARGET_BRANCH="master" # 检测git空间状态
if [[ -n $(git status --s) ]];then
# 打包
rm -f $PACKAGE_NAME.zip
zip -r $PACKAGE_NAME.zip $PACKAGE_NAME # 提交推送
if [ $? -eq 0 ]; then
git add .
git commit -m "$DATETIME"
git pull
git push --set-upstream origin $TARGET_BRANCH
fi
else
echo "workspce no changes"
fi

每次写完笔记需要提交时,我们就在 git bash 在目录下执行 .build.sh 就可以了,打包,提交,推送,全部动作一个脚本搞好。

mac 本身支持 zip 打包,windows 要在 git bash 中使用 zip 命令打包,可以参考这篇文章

那经过前置打包后,每次移动端我们只需要两步:

  • Mgit 拉取笔记数据
  • Siyuan App 设置导入选取笔记数据下 data.zip 即可

总结

这是笔者个人的同步思路,虽然不完美,但也解决了 PC 端同步,移动端能偶尔但能随时查看的需求。后续重度使用后,也会考虑云端服务。

利用Git同步思源笔记的更多相关文章

  1. Windows下自动云备份思源笔记到Gitee

    前言 思源笔记是一款本地笔记为主的软件,其目前提供了148元/year的付费同步功能,但对于21世纪中国难民而言还是太贵啦. 条件允许的同学还是使用官方的同步,支持下作者. 所以,就在思考有没有白嫖的 ...

  2. Git常用命令清单笔记

    git github 小弟调调 2015年01月12日发布 赞  |   6收藏  |  45 5k 次浏览 这里是我的笔记,记录一些git常用和一些记不住的命令,这个笔记原本是基于 颜海镜的文章增加 ...

  3. Xcode中利用git源代码版本号控制

    git是一个版本号控制系统,能够通过命令行来调用,也有专门的桌面软件.这里主要介绍在Xcode中怎样利用git来进行版本号的控制. 一.创建git源 从Xcode5開始引入了使用git的一些新特性.将 ...

  4. 第三章 Git的入门 - 读书笔记

    Android驱动月考3 第三章 Git的入门 - 读书笔记 对于Github,这是全世界最大的开源平台,你可以把你做的项目在这里开源,把你发现的一些新技术在这里开源,向全世界的开发者们分享,大家都彼 ...

  5. git获取内核源码的方法

    [转]http://www.360doc.com/content/17/0410/16/23107068_644444795.shtml 1. 前言 本文主要讲述ubuntu下通过git下载linux ...

  6. 利用Git进行团队协作

    前言: 这里简单介绍一下Git的历史. 同生活中的许多伟大事件一样,Git 诞生于一个极富纷争大举创新的年代.Linux 内核开源项目有着为数众广的参与者.绝大多数的 Linux 内核维护工作都花在了 ...

  7. Android中加入思源字体/NotoSansCJK/SourceHanSans

    系统版本号:Android 4.2.2_r1 本文主要是在Android中加入思源字体的过程记录. 思源字体是Google和Adobe在2014.07.18公布的中文字体. 1.获取思源字体(Goog ...

  8. 利用Git钩子实现代码发布

    目录 1.什么是git钩子 2.安装一个钩子 3.常用的钩子脚本类型 3.1 客户端钩子 3.1.1 pre-commit 3.1.2 prepare-commit-msg 3.1.3 commit- ...

  9. Visual Studio C# 利用git和github协同开发时产生冲突的解决办

    Visual Studio C# 利用git和Github协同开发时产生冲突的解决办法 前言:在前两天的助教作业中,发现了自己没有办法解决在用vs开发C#的窗体项目的过程中产生的冲突问题,在查阅了资料 ...

  10. 如何在 Visual Studio 中使用 Git 同步代码到 CodePlex

    开源社区不管在国内还是国外都很火热,微软也曾因为没有开源而倍受指责,但是随着 .Net framework.ASP.Net MVC等框架的逐渐开源,也让大家看到了微软开源的步伐.CodePlex 则是 ...

随机推荐

  1. 关于在Linux上安装aws cli版本1的记录

    AWS Command Line Interface (AWS CLI) 是一种开源工具,让您能够在命令行 Shell 中使用命令与 AWS 服务进行交互. 因公司项目要求,要在Linux服务器安装a ...

  2. C++面向对象编程之point-like classes的智能指针和迭代器、function-like classes即仿函数

    1.智能指针 智能指针里面包含其他指针的形式和 委托 感觉比较像; 智能指针一定都需要重载 * 和 -> 操作符 ; 这个符号它作用后还能再继续作用下去; 2.迭代器: 这里主要关注 * 和 - ...

  3. 微软出品自动化神器【Playwright+Java】系列(五) 之 常见点击事件操作

    写在前面 明天就是周五了,这周有那么一两天心情特别不好,真的是做什么都没兴致,所以导致整个人都很丧,什么都不想做. 本打算周一就更新这篇文章的,但由于公司一直加班,每天到家很晚,都是挤时间去学,理解后 ...

  4. linux开放端口并测试

    开放端口操作 开放端口 先开启防火墙(才能用开启端口的命令) systemctl start firewalld.service 开放端口 firewall-cmd --zone=public --a ...

  5. Aspose.Words 操作 Word 画 EChart 图

    使用 Aspose.Words 插件在 Word 画 EChart 图 使用此插件可以画出丰富的 EChart 图,API 参考 https://reference.aspose.com/words/ ...

  6. JWT基础概念详解

    JWT基础概念详解 JWT介绍 之前我们文章讲过分布式session如何存储,其中就讲到过Token.JWT.首先,我们来回顾一下使用Token进行身份认证. 客户端发送登录请求到服务器 服务器在用户 ...

  7. Spring事务传播行为实战

    一.什么是事务传播行为? 事务传播行为(propagation behavior)指的就是当一个事务方法被另一个事务方法调用时,这个事务方法应该如何运行. 例如:methodA方法调用methodB方 ...

  8. iptables规则查询

    iptables规则查询 之前在iptables的概念中已经提到过,在实际操作iptables的过程中,是以"表"作为操作入口的,如果你经常操作关系型数据库,那么当你听到" ...

  9. Unity坐标系入门

    一.坐标系的概念 Unity 世界坐标系采用左手坐标系,大拇指指向X轴(红色),食指指向Y轴(黄色),中指向手心方向歪曲90度表示Z轴(蓝色),同时Z轴也是物体前进方向,下图表示Unity的四种坐标系 ...

  10. Python基础之模块:3、os模块 sys模块 json模块 json实战

    目录 一.os模块 1.创建目录 2.删除目录 3.查看指定路径下目录内容 4.删除/重命名文件 5.获取/切换当前目录 6.动态获取项目根路径 7.拼接/切割路径 8.判断文件.目录是否存在 9.判 ...