Obsidian的Git插件设置配置全流程 -- 简单的电脑端多平台同步方案及常见问题
Obsidian的Git插件设置配置全流程 -- 简单的电脑端多平台同步方案及常见问题
- 参考文章
- 引言
- 1. git 介绍及安装
- 2. git 本地配置及远程仓库链接
- 3. obsidian 的 git 插件
- 4. 常用的使用场景和对应的命令
- 4.1. 本地仓库已推送到远端,如何在另一个电脑上第一次同步
- 4.2 多端同步流程
- 5. 可能出现的问题(随时更新)
- 5.1 push 或 pull 以后长时间没反应然后说网络错误
- 5.2 Failed to connect to github.com port 443 after 21090 ms: Couldn't connect to server
- 5.3 使用 git push 时先是邮箱和用户名不正确
- 5.4 ssh: connect to host github.com port 22: Connection timed out
- 5.5 在 github 上创建仓库后访问,出现了访问被拒绝的问题
- 5.6 git add 时出现错误 error: "helloworld/ " does not have a commit checked out fatal: adding files failed
- 5.7 同步时出现 error
- 5.8 新下载的 git 在 clone 时卡在 receiving objects 不动
- 5.9 最严重的问题是 git 文件损坏
参考文章
Obsidian 插件安装教程
引言
obsidian 的一个很常见的问题就是如何同步,网上现在有很多种同步方案,我现在分享给大家我用的最多,也是比较舒服的方案
不谈背景直接说方案没有价值,我的使用场景是跨系统跨主机的笔记同步,并没有手机同步的需求,手机最多使用 anki 背背卡片,工作还是要在 pc 端进行
使用 git 在 github 上进行托管是因为从事软件行业用起来比较熟练,遇到一些常见的问题直接就解决了,还能提高使用的熟练度,本文放了一些常见的问题,如果遇到了更多的问题欢迎反馈,我会随时更新,关注不迷路
同样,如果大家有什么问题或更好的建议欢迎在下方评论或私信我,如果没有及时回复你可以在我的公众号<文件夹的知识圈>找到我
1. git 介绍及安装
git 的介绍在网上可以一搜一大把,简单来说 git 就是一个内容跟踪器,支持版本控制、多人开发甚至还可以用来同步 obsidian 的笔记
git 在各平台的安装请参考 git 官网安装 git
2. git 本地配置及远程仓库链接
- 完成 git 安装打开终端并保证当前目录在想要同步的仓库文件夹处
对于 windows 来说,可以直接找到对应的仓库文件夹然后选中如图路径会变蓝,键入 powershell 回车即可打开如第二个图所示的终端框,注意 cmd 和 powershell 打开的终端命令不一样请用 powershell


对于 macos 来说可以在应用处的其它里面打开终端然后通过 cd path 进入对应仓库文件夹
- git 在本地的配置,在终端中依次键入以下内容,注意这里的用户名和邮箱可以随意填写
git config --global user.name "abc"
git config --global user.email abc@gmail.com
- 生成本地秘钥
输入下面的命令
ssh-keygen -t rsa -C "shitl1017@gmail.com"
生成的过程中一直回车即可,默认的存放位置在家目录下的 .ssh 文件夹下
windows 和 mac 这一步的命令是一样的,通过下面命令打印出对应 id_rsa.puh 中的公钥
cat ~\.ssh\id_rsa.pub
- 接下来在 github 创建对应仓库(需要魔法)
在注册好 github 账号并登录成功后,会进入主页,首先创建对应的笔记仓库,点击这里

进去以后需要填写对应的仓库名并把仓库设置成私有,如果有分享笔记给其他人的需求可以设置成公开

完成后点击右下角的 Create repository,保持这一页面先不要关
- 在 github 上传 3 中在终端里面看到的秘钥
首先在这个页面的右上角左键点击你的头像会出现下面的样子,然后右键点击在新标签页打开,注意不要覆盖掉当前页

打开后按照下图依次点击

在新的界面处,依次填入名称、从终端中复制出来的完整秘钥并点击 Add SSH key,然后就算是添加成功了
- 回到最开始的仓库文件夹,在对本地仓库进行设置之前还有一个准备工作要做
在仓库文件夹下也就是 .git 的统计目录下创建名为 .gitignore 文本,在里面输入以下内容

这样设置的目的是不同步 obsidian 自带的 .trash 垃圾文件夹和当前工作区状态的配置文件,这个配置文件在同步的时候会经常性的出现 git 冲突,非常的恶心,如果有其它不想要同步的内容都可以加在这里面,这两个文件是不影响多端同步的,否则需要手动的同步
- 设置本地仓库并 push 到远端仓库
对仓库的本地仓库进行设置设置的步骤为
git init
git commit -m "first commit"
git branch -M main
git remote add origin git@github.com:xxx/xxx.git
git push -u origin main
这里的 xxx/xxx.git 和上面那个不让关闭的页面里面的命令保持一致,正常来说如果网络正常且步骤正常此时刷新刚才没有关闭的网页会发现里面有内容了,同时内容中没有 .trash 并且 .obsidian 文件夹下没有 workspace.json 的文件
3. obsidian 的 git 插件
在上述内容都完成后,就可以进行 obsidian 的插件下载和配置了,如果不出意外再也不需要打开黑乎乎的终端手动推送了,插件下载第一是在官方社区搜索 Git 对第一个进行下载启用,或者去我的公众号 <文件夹的知识圈> 发送 <插件下载> 在对应的文件夹中找到 obsidian-git 即可下载,安装教程请参考 Obsidian 插件安装教程
下载安装并且启用后不需要进行任何的设置,常用的命令就三个,首先打开对应的 obsidian 仓库,使用 ctrl/cmd + p 打开命令行,三个命令分别是 Git: commit all changes 、Git: Push 和 Git: Pull,三个命令分别对应了提交本地仓库的修改,推送本地仓库的修改到远端和从远端将修改下拉到本地,接下来会介绍对应的使用场景
4. 常用的使用场景和对应的命令
4.1. 本地仓库已推送到远端,如何在另一个电脑上第一次同步
- 首先需要完成 3 中的 1~5,也就是直到完成将本地公钥在 github 仓库上为止
- 在网页打开你对应的仓库,按照下面的步骤依次点击直到最后一步复制成功

- 参考 3 中对应的步骤打开你想要存放文件的上层目录
为什么说是上层目录呢,因为从远端 clone 下来的是一个文件夹,比如说你的仓库名为 note,你想把它存到 Document 目录下,你就需要打开 Document 下的终端,等完成后 Document 下就是你对应的 note 文件夹
- 在终端中键入命令
git clone xxxxxx 就是步骤 2 中复制的内容,然后回车就可以从远端下拉下来了 - 如果是正常按照步骤一下一下来的,那么恭喜你已经完成了同步的第一个任务,尝试用 obsidian 打开对应的仓库吧~
4.2 多端同步流程
一个正常的同步流程就是,一个电脑产生了修改,然后另一个电脑想要同步这个修改,只需要参照下面的步骤即可
- 在发生修改了的仓库下通过
ctrl/cmd + p打开命令行,键入Git: Commit all changes,在右上角会闪过如下图

- 如果另一个电脑也有修改并且曾经 push 到过远端仓库,也就是现在本地仓库的内容落后于远端仓库,需要先在命令行键入
Git: Pull把本地仓库和远端同步一下,会在右上角看到 pull 多少文件下来或者 everything is updated 的字样 - 接下来再在本地的 git 中通过
Git: Push将本地的修改推送到远端即可
5. 可能出现的问题(随时更新)
5.1 push 或 pull 以后长时间没反应然后说网络错误
由于 github 需要魔法,所以在所有和 github 互动的操作中都需要保持魔法
5.2 Failed to connect to github.com port 443 after 21090 ms: Couldn’t connect to server
此种情况出现在可以正常访问 github 但是无法正常的 push 和 pull,解决流程为
- 查看本机系统端口号
- mac:设置中搜索代理,可以看到服务器号为
127.0.0.1端口号为7890 - windows:设置 -> 网络和 Internet -> 代理
- mac:设置中搜索代理,可以看到服务器号为
- 设置 git 端口号和上面端口号保持一致
git config --global http.proxy 127.0.0.1:7890
git config --global https.proxy 127.0.0.1:7890
5.3 使用 git push 时先是邮箱和用户名不正确
这说明之前已经生成过秘钥了,所以再在本地配置的时候不会产生覆盖,打开对应的 id_rsa.pub 文件查看真是的用户名和邮箱是什么然后使用下面命令进行全局修改即可,其中第一个 xxx 是用户名,第二个是邮箱
git config --global user.name "xxx"
git config --global user.email xxx
5.4 ssh: connect to host github.com port 22: Connection timed out
- 检查 github.com 是否可以正常访问
- 22 端口可能被屏蔽了,可以尝试连接 Github 的 443 端口
$ vim ~/.ssh/config
```
# Add section below to it
Host github.comHostname ssh.github.comPort 443
```
$ ssh -T git@github.com
Hi xxxxx! You've successfully authenticated, but GitHub does not
provide shell access.
这个方案有效的前提是:执行命令 ssh -T -p 443 git@ssh.github.com 后不再提示 connection refused
如果还是出现问题,可以通过
$ ssh -vT git@github.com
查看建立 ssh 连接的过程中发生了什么,这个命令会打出详细日志
输出的日志中会显示,连接的是 Github 的哪个 ip 和哪个端口,如果 ip 可以通过网页访问正常打开,并且端口也是 443 就不会有问题了
5.5 在 github 上创建仓库后访问,出现了访问被拒绝的问题
首先问题并不是 id_rsa_pub 的问题,因为这个已经正常添加到了仓库中,没有问题
问题是在新建仓库的时候手动添加了一个 readme,所以导致远程仓库和本地要提交的仓库结构不统一,没有相同的历史节点,所以提交被拒绝,解决办法如下
- 合并两个没有共同历史节点的分支
git pull origin main --allow-unrelated-histories
- 合并的时候出现问题
Your local changes to the following files would be overwritten by merge: .idea/vcs.xml
表明本地有修改未 commit,先 commit 即可
- 合并后手动处理冲突文件,然后使用
git push origin main即可
5.6 git add 时出现错误 error: "helloworld/ " does not have a commit checked out fatal: adding files failed
说明在 helloword 的子目录中存在.git 文件,删除或者压缩成压缩包即可
5.7 同步时出现 error
error: invalid object 100644 b15902813faa5292b67e974406facf6e5f1f06c5 for 'xx.md'
error: invalid object 100644 b15902813faa5292b67e974406facf6e5f1f06c5 for 'xx.md'
error: Error building trees
解决步骤如下
git rm --cached 'xx.md'注意 windows 需要使用双引号git add 'xx.md'
然后就可以正常 commit 和 push 了
5.8 新下载的 git 在 clone 时卡在 receiving objects 不动
切换 git 使用的内置 ssh.exe
git config --global core.sshCommand "C:/Windows/System32/OpenSSH/ssh.exe"
5.9 最严重的问题是 git 文件损坏
这个时候需要保证远端仓库是正确的,将本地仓库的修改单独拿出来,然后 clone 远端仓库,再将修改手动添加回去,可以是一段一段加,也可以是直接一个把修改过的 md 文件复制过来
相关文章:
Obsidian的Git插件设置配置全流程 -- 简单的电脑端多平台同步方案及常见问题
Obsidian的Git插件设置配置全流程 -- 简单的电脑端多平台同步方案及常见问题 参考文章引言1. git 介绍及安装2. git 本地配置及远程仓库链接3. obsidian 的 git 插件4. 常用的使用场景和对应的命令4.1. 本地仓库已推送到远端,如何在另一个电脑上第一次同步4.2 多端同…...
MapReduce 的 Shuffle 过程
MapReduce 的 Shuffle 过程指的是 MapTask 的后半程,以及ReduceTask的前半程,共同组成的。 从 MapTask 中的 map 方法结束,到 ReduceTask 中的 reduce 方法开始,这个中间的部分就是Shuffle。是MapReduce的核心,心脏。 …...
【Linux】进程控制——创建,终止,等待回收
目录 进程创建fork再介绍写时拷贝 进程终止退出码退出方式 进程等待获取子进程statuswaitwaitpid 在前两篇进程概念中,对进程进行了介绍,进行了初步认识,也认识到了与之相关联的进程地址空间;本文则对进程的生命周期——创建&…...
新手必看,17个常见的Python运行时错误
初入门的 Pythoner 在运行代码时免不了会遇到一些错误,刚开始可能看起来比较费劲。 随着代码量的积累,熟能生巧,当遇到一些运行时错误时能够很快的定位问题原题。 下面整理了常见的 17 个错误,希望能够帮助到大家。 1、忘记在 …...
pdf 添加页眉页脚,获取前五页
test /*** 加水印、页眉、页脚*/ Test void d1() throws IOException {//水印 样式调整String file "D:\\test\\2\\GB1.pdf";PdfUtil.WatermarkPDF(file); } /*** 获取前五页*/ Test void d2() throws IOException {String file "E:\\test\\2\\3.pdf";P…...
SQL 实战问题解析
在数据分析和数据库操作中,SQL 查询是至关重要的一环。本文将通过分析四道典型的 SQL 题目,深入探讨如何从复杂的业务需求中构建准确高效的 SQL 查询。 一、删除学生表冗余信息 需求解读 给定一个学生表,其中包含自动编号、学号、姓名、课程编…...
Android MVVM demo(使用DataBinding,LiveData,Fresco,RecyclerView,Room,ViewModel 完成)
使用DataBinding,LiveData,Fresco,RecyclerView,Room,ViewModel 完成 玩Android 开放API-玩Android - wanandroid.com 接口使用的是下面的两个: https://www.wanandroid.com/banner/jsonhttps://www.wan…...
python的安装环境Miniconda(Conda 命令管理依赖配置)
这一段时间,对AI大模型 有了兴趣就想研究一下。 在研究之前肯定要先把需要的编程技能掌握了。经过我查阅资料,今天就先学一下 python的 环境安装。 Node.js 包管理工具:npm 依赖配置文件:package.json 环境管理:nvm&am…...
【LeetCode】【算法】128. 最长连续序列
LeetCode 128. 最长连续序列 题目描述 给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。 请你设计并实现时间复杂度为 O(n) 的算法解决此问题。 示例: 输入:nums [10…...
【dvwa靶场:XSS系列】XSS (Reflected)低-中-高级别,通关啦
一、低级low 简单拿捏 <script>alert(123)</script>二、中级middle 源码过滤了script但是没有过滤大小写,改成大写S <Script>alert(123)</script>三、高级high 比中级高,过滤了script并且以及大小写,使用其他标…...
imu_tk配置教程(锁死ubuntu18.04,不要22.04)
在ubuntu18.04上安装。 imu_tk 的 cmake 必须要qt4.x,但 ubuntu22.04 和qt4.x不适配。 1、安装 ceres-solver 下载路径:http://ceres-solver.org/installation.html (需要梯子,核心内容记录如下。需下载 ceres-solver 安装包&am…...
Vue 的 keep-alive
什么是 keep-alive? <keep-alive> 是一个内置组件,用于缓存组件实例,从而提高应用的性能。当包裹动态组件时,<keep-alive> 会缓存不活跃的组件实例,而不是销毁它们。这使得当组件重新激活时,可…...
linux进程的状态之环境变量
我们在前面了解了进程的状态及相关概念 接下来我们接着上一篇进程的状态接着了解环境变量 进程的状态 文章目录 目录 文章目录 前言 二、环境变量 1、常见环境变量 2、查看环境变量 3、修改PATH 4、HOME 5、PATH 编辑 6、和环境变量相关的命令 三、环境变量的组织…...
【系统架构设计师】预测试卷一:论文(包括4篇论文主题对应的写作要点分析)
更多内容请见: 备考系统架构设计师-专栏介绍和目录 文章目录 试题一:论面向服务的架构设计与应用试题一写作要点试题二:论软件架构的脆弱性试题二 写作要点试题三:论分布式存储系统架构设计试题三 写作要点试题四:论网络安全体系架构设计及应用试题四 写作要点试题一:论面…...
东胜物流软件 AttributeAdapter.aspx SQL 注入漏洞复现
0x01 产品简介 东胜物流软件是青岛东胜伟业软件有限公司一款集订单管理、仓库管理、运输管理等多种功能于一体的物流管理软件。该公司初创于2004年11月(前身为青岛景宏物流信息技术有限公司),专注于航运物流相关环节的产品和服务。东胜物流信息管理系统货代版采用MS-SQLser…...
2024年网鼎杯青龙组|MISC全解
转载或摘抄时请标明出处 MISC01 wdbflag{22226aba1d98c4302a6f508cad7da5d8} MISC02 一把梭工具没有任何结果,估计缺少符号表,直接strings flag > out.txt导出后慢慢找线索 在桌面上发现了png和txt文件,用文件名做一次筛选 第一行发现bas…...
查询引擎的演变之旅 | OceanBase原理解读
在关系型数据库中,查询调度器与计划执行器,有着与查询优化器同样重要的地位,随着计算机硬件技术的飞速进步,这两大模块的重要性日益凸显,成为提升数据库性能的关键所在。接下来,本文将由来自 OceanBase 的技…...
轻松理解操作系统 - Linux 软硬链接是什么?
Linux 由于其开源、比较稳定等特点统治了服务端领域。也因此,学习Linux 系统相关知识在后端开发等岗位中变得越来越重要,甚至可以说是必不可少的。 因为它的广泛应用,所以在程序员的日常工作和面试中,它都是经常出现的。它的开源特…...
Redis - 数据库管理
Redis 提供了⼏个⾯向Redis数据库的操作,分别是dbsize、select、flushdb、flushall命令, 本机将通过具体的使⽤常⻅介绍这些命令。 一、切换数据库 select dbIndex 许多关系型数据库,例如MySQL⽀持在⼀个实例下有多个数据库存在的&#…...
VBA02-初识宏——EXCEL录像机
一、录制宏 录制宏其实就是将一系列操作结果录制下来,并命名存储。这些操作可以是关于数据的处理、格式的设置、函数的运用等,相当于在编程语言(如VB)中定义的一个子程序。 在录制宏时,软件会记录用户执行的一系列操…...
TDengine 快速体验(Docker 镜像方式)
简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能,本节首先介绍如何通过 Docker 快速体验 TDengine,然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker,请使用 安装包的方式快…...
Prompt Tuning、P-Tuning、Prefix Tuning的区别
一、Prompt Tuning、P-Tuning、Prefix Tuning的区别 1. Prompt Tuning(提示调优) 核心思想:固定预训练模型参数,仅学习额外的连续提示向量(通常是嵌入层的一部分)。实现方式:在输入文本前添加可训练的连续向量(软提示),模型只更新这些提示参数。优势:参数量少(仅提…...
Java如何权衡是使用无序的数组还是有序的数组
在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…...
【机器视觉】单目测距——运动结构恢复
ps:图是随便找的,为了凑个封面 前言 在前面对光流法进行进一步改进,希望将2D光流推广至3D场景流时,发现2D转3D过程中存在尺度歧义问题,需要补全摄像头拍摄图像中缺失的深度信息,否则解空间不收敛…...
OD 算法题 B卷【正整数到Excel编号之间的转换】
文章目录 正整数到Excel编号之间的转换 正整数到Excel编号之间的转换 excel的列编号是这样的:a b c … z aa ab ac… az ba bb bc…yz za zb zc …zz aaa aab aac…; 分别代表以下的编号1 2 3 … 26 27 28 29… 52 53 54 55… 676 677 678 679 … 702 703 704 705;…...
c# 局部函数 定义、功能与示例
C# 局部函数:定义、功能与示例 1. 定义与功能 局部函数(Local Function)是嵌套在另一个方法内部的私有方法,仅在包含它的方法内可见。 • 作用:封装仅用于当前方法的逻辑,避免污染类作用域,提升…...
上位机开发过程中的设计模式体会(1):工厂方法模式、单例模式和生成器模式
简介 在我的 QT/C 开发工作中,合理运用设计模式极大地提高了代码的可维护性和可扩展性。本文将分享我在实际项目中应用的三种创造型模式:工厂方法模式、单例模式和生成器模式。 1. 工厂模式 (Factory Pattern) 应用场景 在我的 QT 项目中曾经有一个需…...
k8s从入门到放弃之HPA控制器
k8s从入门到放弃之HPA控制器 Kubernetes中的Horizontal Pod Autoscaler (HPA)控制器是一种用于自动扩展部署、副本集或复制控制器中Pod数量的机制。它可以根据观察到的CPU利用率(或其他自定义指标)来调整这些对象的规模,从而帮助应用程序在负…...
小智AI+MCP
什么是小智AI和MCP 如果还不清楚的先看往期文章 手搓小智AI聊天机器人 MCP 深度解析:AI 的USB接口 如何使用小智MCP 1.刷支持mcp的小智固件 2.下载官方MCP的示例代码 Github:https://github.com/78/mcp-calculator 安这个步骤执行 其中MCP_ENDPOI…...
Redis上篇--知识点总结
Redis上篇–解析 本文大部分知识整理自网上,在正文结束后都会附上参考地址。如果想要深入或者详细学习可以通过文末链接跳转学习。 1. 基本介绍 Redis 是一个开源的、高性能的 内存键值数据库,Redis 的键值对中的 key 就是字符串对象,而 val…...
