关于 obsidian-git 这个插件的使用,就不做具体的介绍了,
官网地址在这里 https://publish.obsidian.md/git-doc/Start+here
在使用的过程中,有几个需要注意的点在这里做下记录
这款插件是国外开发的,整个配置项不多,但是官方没有做一个全面的介绍,导致在使用的过程中出现的一些问题无从下手,浪费了很多时间。
advanced
高级设置里,很多看的不是很明白,具体指代的是什么
注意,以下这些配置,正常情况无需做任何设置,这里只做功能说明
自定义git二进制路径
Custom Git binary path
正常情况无需配置
这里说的是 git 的二进制可执行文件,就是 .exe 文件的路径,比如我这里 git 安装在 D:\Environment\Git\bin\git.exe
这里可填可不填,一般本地配置了git的环境变量,就不需要指定这个路径了
自定义git仓库路径
Custom base path (Git repository path)
正常情况无需配置
上面不是设置了 git 执行文件的路径吗,他就是用来使用 git 命令来操作你git仓库的内容的,可以联想到,这里说的是你本地git项目的路径
假设本地的git 项目 obsidian-test 目录层级是这样的,blog-notes 是 obsidian 仓库的路径,obsidian-test是该仓库下新建的一个 git 项目
├── blog-notes
│ ├── obsidian-test
│ ├── .git
这个设置允许你告诉系统在执行 git 命令时应该去哪个目录找到 Git 存储库。那么这个设置在这种情况下直接填相对路径 obsidian-test
,这个就是当前 obsidian 仓库下的有效的 git 仓库 base path
自定义 .git 目录路径
Custom Git directory path (Instead of '.git')
正常情况无需配置
这个配置跟上面的 base path 是配套使用的,只要上面的配置是对的,那这里就保持为空
如果明白的就很容易理解,他这里括号写了一个替代 .git,我们知道 git 项目都有一个 .git 文件夹,那么这里就是说,你可以指定 .git 目录的路径,为什么要制定呢?
默认情况下,这里读取的是当前仓库根目录下的 .git 目录,假设你的 obsidian 仓库里有多个项目,每个项目都有一个 .git 目录,那么你就需要指定具体项目的 .git 路径了
在此设备上禁用
disable on this device
不明白为什么会有这个选项,感觉是多余的,但是如果你不小心把这个打开了,那么直接无法使用,提示 git is not ready
Automatic
自动提交区域就是关于自动操作的相关设置
- Split automatic commit and push 是否将提交和推送分开操作,默认是保持相同的定时规则
- Vault backup interval (minutes) 单位是分钟,可以是小数,仓库备份的时间间隔,这里的备份就是指 commit 和 push 的操作
- Auto Backup after stop editing any file 无任何操作后多久开始备份,默认是关闭的,开启后会有一个时间的设置
- Auto backup after latest commit 提交后自动备份,这个备份策略与上面的备份策略只能选一种
- Auto pull interval (minutes) 自动拉取远程仓库的时间,单位分钟
- Commit message on auto backup/commit 提交信息的格式设置,一般没啥要改的,保持默认即可
手动提交
在命令面板中(ctrl+p)搜索 obsidian git 就能找到很多该插件的命令,source control 就是 git 的操作的控制面板,手动提交的时候就需要用到了。也可以在该插件快键键设置里找到相关命令
手动推送到远程的步骤如下
- stage all 提交到暂存区
- commit 提交的本地仓库
- push 推送到远程仓库
各种报错
git 分支不匹配
plugin:obsidian-git:29119 Uncaught (in promise) Error: fatal: The upstream branch of your current branch does not match
the name of your current branch. To push to the upstream branch
on the remote, use
git push origin HEAD:master
To push to the branch of the same name on the remote, use
git push origin HEAD
To choose either option permanently, see push.default in 'git help config'.
我们可以看下这个 .git 文件下的 config 配置内容,本地分支名称是 main,而将要 merge 合并的分支叫 master
省略了。。。。。
[branch "main"]
remote = origin
merge = refs/heads/master
也可以在 cmd 中通过命令 git branch
来查看
E:\obsNote\obsidian-git>git branch
* main
而我服务器上也只有一个分支,
问题就出在这里了,config 里
merge = refs/heads/master
配置有问题
git branch -m main
怎么解决呢,错误日志也告诉我们了
在 Git 中,每个本地分支通常都会关联到远程仓库的一个分支,这个远程分支称为上游分支。错误信息提供了两种解决方案,具体如下:
-
推送到远程的上游分支:
git push origin HEAD:master
这个命令将你当前的本地分支(HEAD)推送到远程仓库的
master
分支。确保将master
替换为你实际的远程上游分支名称,因为这个名称可能因仓库设置而异。
针对这个 案例,则需要推送到 main 分支 -
推送到远程与本地分支同名的分支:
git push origin HEAD
这个命令将你当前的本地分支(HEAD)推送到远程仓库中与其同名的分支。这假定你的本地分支与远程分支同名。
无效的 git 仓库
如图,提示你找不到有效的 git 仓库,这个就是上面说的, 自定义git仓库路径或者自定义 .git 目录路径有问题,即,默认的配置无效,或者你手动填的这个配置是无效的
捉个虫:Auto backup after latest commit 这个选项,指的是手动提交会不会影响自动提交。比如设置了每10分钟自动提交,但是第7分钟的时候手动提交了一下,如果开了这个选项,就会重置计时,再等10分钟才会自动提交,否则就是3分钟后自动提交。