6.Obsidian 三端同步完整流程:电脑、手机、平板通过 Gitee 实时同步
2026/8/11 3:16:11 网站建设 项目流程

Obsidian 三端同步完整流程:电脑、手机、平板通过 Gitee 实时同步

适用场景:你有两台设备——Windows 电脑 + 安卓手机(平板同理),想用 Obsidian 写笔记,希望两端内容一致,改一处另一处自动跟上。
本文以Gitee 作为中转仓库,电脑端一键推送,手机端 Termux 一句命令拉取,全程免费、无需第三方同步服务。


0. 核心思路(先看懂再动手)

同步的本质不是"Obsidian 自己同步",而是"用 Git 把笔记文件夹变成代码仓库,推到 Gitee,两端再各自 pull/push"。

电脑(写笔记)──push──▶ Gitee(中转仓库) ◀──pull── 手机(Termux) ▲ │ └──────push(手机端有改动时)──┘
  • 电脑端:双击一个快捷方式(或命令行输obsidian),自动把笔记pull → commit → push到 Gitee。
  • 手机端:Termux 里输obsidian,自动commit 本机改动 → pull → 有改动则 push到 Gitee。
  • 平板端:和手机端完全一样(都是 Termux),或装 MGit 手动同步。

为什么选 Gitee 而不是 GitHub:国内访问快、免费私有仓库、SSH 配置简单。


1. 准备工作

1.1 需要的东西

项目说明
电脑Windows 10/11,已装 Git(或 PortableGit)
手机安卓,已装 Obsidian + Termux(应用商店或 F-Droid)
账号一个 Gitee 账号(https://gitee.com)
网络能正常访问 Gitee(无需 VPN,国内直连)

1.2 在 Gitee 上建仓库

  1. 登录 Gitee → 右上角+新建仓库
  2. 仓库名称随意(如obsidian),选私有,初始化不勾选Readme(保持空仓库)。
  3. 创建后,记下仓库的SSH 地址,形如:
    git@gitee.com:你的用户名/obsidian.git

重要:必须用SSH地址,不要 HTTPS。SSH 配一次免密,后面永不再输密码。


2. 电脑端配置

2.1 确认笔记目录是 Git 仓库

假设你的笔记在D:\Obsidian\笔记。打开 PowerShell,执行:

cd D:\Obsidian\笔记 git status

如果提示"不是 git 仓库",先初始化并关联远程:

git init git remote add gitee git@gitee.com:你的用户名/obsidian.git

注意:远程名我用gitee而不是默认的origin,避免以后混淆。你也可以用origin,脚本里对应改一下即可。

2.2 配置 .gitignore(关键!避免仓库变脏)

Obsidian 会产生大量配置/缓存文件(.obsidian.trash等),这些不该同步,否则两端会互相覆盖设置、仓库永远"脏"。

在笔记根目录创建.gitignore

# 屏蔽 Obsidian 配置/缓存/回收站 .obsidian .trash # 屏蔽 AI 助手工作目录(如有) .claudian # 屏蔽快捷方式/链接文件 *.url open.url # 屏蔽系统垃圾 .DS_Store Thumbs.db desktop.ini *.tmp

要点:用无斜杠前缀写法(如.obsidian而不是.obsidian/),可以同时匹配已追踪和未追踪的文件/目录。
如果之前已经把这些目录git add进去了,需要用git rm --cached -r .obsidian把它们从索引移除,再提交一次。

2.3 统一换行符(避免 CRLF 假改动)

Windows 默认 CRLF,手机默认 LF,直接同步会产生"每行都被改了"的假冲突。在笔记根目录创建.gitattributes

* text=auto eol=lf

并在 Git 里关闭自动转换:

git config core.autocrlf false

2.4 生成 SSH 密钥并绑定 Gitee

ssh-keygen-t ed25519-C"你的邮箱"# 一路回车,不用设密码

然后查看公钥并复制到 Gitee:

cat~/.ssh/id_ed25519.pub
  • 打开 Gitee → 右上角头像 →设置SSH 公钥→ 粘贴保存。
  • 测试连接:
ssh-T git@gitee.com# 看到 Hi 你的用户名! 即成功

2.5 写同步脚本

创建C:\Users\你的用户名\obsidian_sync_windows.sh

#!/bin/bash# Obsidian 电脑端一键同步(仅 Gitee)NOTE_DIR="D:/Obsidian/笔记"REMOTE="gitee"BRANCH="main"cd"$NOTE_DIR"||{echo"❌ 目录不存在";exit1;}# 1. 拉取远程gitpull"$REMOTE""$BRANCH"--rebase--no-edit||{echo"⚠️ 拉取冲突,请手动解决后重跑";exit1;}# 2. 提交本地改动gitadd.if!gitdiff--cached--quiet;thengitcommit-m"电脑端自动同步$(date'+%Y-%m-%d %H:%M:%S')"fi# 3. 推送gitpush"$REMOTE""$BRANCH"||{echo"❌ 推送失败,检查网络/凭据";exit1;}echo"✅ 同步完成!"

注意NOTE_DIR用正斜杠D:/Obsidian/笔记,Git Bash 里反斜杠会出错。

2.6 做成"双击就能同步"

方式 A:桌面快捷方式

  1. 桌面右键 → 新建 → 快捷方式。
  2. 目标填(一行):
    "C:\Users\你的用户名\.workbuddy\vendor\PortableGit\bin\bash.exe" "C:\Users\你的用户名\obsidian_sync_windows.sh"

    如果你的 Git 装在别处,把路径换成C:\Program Files\Git\bin\bash.exe

  3. 命名如obsidian同步,以后双击就同步。

方式 B:命令行输一个词

  1. 创建C:\Users\你的用户名\obsidian.cmd
    @echo off "C:\Users\你的用户名\.workbuddy\vendor\PortableGit\bin\bash.exe" "C:\Users\你的用户名\obsidian_sync_windows.sh"
  2. C:\Users\你的用户名加进系统PATH(设置 → 关于 → 高级系统设置 → 环境变量 → 用户 PATH → 新建)。
  3. 重启终端后,任意位置输入obsidian回车即可同步。

2.7 首次推送

cd D:\Obsidian\笔记 git add.git commit-m"初始提交"git push gitee main

如果远程默认分支是master而不是main,把脚本和命令里的main换成master


3. 手机端配置(Termux)

3.1 安装与授权存储

  1. 应用商店装Termux
  2. 打开 Termux,先给存储权限(让 Termux 能访问手机文件):
termux-setup-storage

会弹窗请求权限,允许。之后~/storage/shared/就映射到手机内部存储。

  1. 装 Git:
pkg update&&pkginstall-ygitopenssh

3.2 把 Gitee 仓库克隆到手机

假设你的 Obsidian 笔记库在手机上的路径是Download/Obsidian_日记

cd~/storage/shared/Downloadgitclone git@gitee.com:你的用户名/obsidian.git Obsidian_日记

克隆后,Obsidian_日记文件夹就是 git 仓库,直接用 Obsidian 打开它即可。

3.3 手机端 SSH 免密

ssh-keygen-ted25519-C"手机端"cat~/.ssh/id_ed25519.pub

把公钥同样添加到 Gitee 的 SSH 公钥里(可以和多台设备共用一个,也可以分别添加)。测试:

ssh-Tgit@gitee.com

3.4 写手机端同步脚本

重要:脚本不能放在~/storage/shared/下(安卓外部存储不允许执行脚本),必须放 Termux 家目录~

nano~/obsidian_sync_termux.sh

内容:

#!/bin/bash# Obsidian 手机端同步(Termux)NOTE_DIR="$HOME/storage/shared/Download/Obsidian_日记"REMOTE="origin"BRANCH="main"cd"$NOTE_DIR"||{echo"❌ 目录不存在$NOTE_DIR";exit1;}# 1. 先提交本机改动gitadd.if!gitdiff--cached--quiet;thengitcommit-m"手机端同步$(date'+%Y-%m-%d %H:%M:%S')"fi# 2. 拉取 Giteegitpull"$REMOTE""$BRANCH"--rebase--no-edit||{echo"⚠️ 拉取冲突,请手动解决后重跑";exit1;}# 3. 若有本机提交,推送回 Gitee(双向同步)if[-n"$(gitlog"$REMOTE/$BRANCH..HEAD"2>/dev/null)"];thengitpush"$REMOTE""$BRANCH"||{echo"❌ 推送失败";exit1;}fiecho"✅ 手机端同步完成!"

保存后加执行权限:

chmod+x ~/obsidian_sync_termux.sh

3.5 添加同步口令

编辑~/.bashrc(或~/.zshrc):

echo"alias obsidian='~/obsidian_sync_termux.sh'">>~/.bashrcsource~/.bashrc

以后在 Termux 里输入obsidian回车,就自动同步。

若 alias 不生效(某些 Termux 版本),直接用bash ~/obsidian_sync_termux.sh也能跑。


4. 平板端

平板和手机完全一样:装 Termux + Obsidian,克隆同一个 Gitee 仓库,放同样的脚本和 alias 即可。三端共享一个 Gitee 仓库,谁改谁 push,其他人 pull 就跟上。


5. 日常使用规范(避免冲突的关键)

  1. 同步前先同步:开始写之前先跑一次同步,拿到最新内容。
  2. 写完就同步:离开设备前跑一次,把改动推上去。
  3. 大文件要谨慎:图片、视频会撑大仓库。Gitee 免费仓库有容量上限(约 1GB),超了会警告甚至拒收。建议:
    • 图片尽量压缩后再放;
    • 超大视频不要进笔记库,用云盘分享链接代替。
  4. 冲突怎么办:极少数情况两端同时改了同一文件,pull 会报冲突。常见两类:
    • 内容冲突:同一文件两端都改了同一行,文件里出现<<<<<<</=======/>>>>>>>标记,手动编辑保留正确内容后git add . && git commit再 push。
    • rename/delete 冲突:一端把文件移动/重命名了,另一端却删了它,git pull --rebase会卡在 rebase 中间(见 FAQ 对应条目)。这种不能靠编辑文件解决,需git rebase --abort后处理。
  5. 不要在中转仓库里手改文件:Gitee 网页上直接编辑笔记容易和本地冲突,尽量只在本地 Obsidian 里改。

6. 常见问题(FAQ)

Q:push 时报Failed to connect to gitee.com port 443 via 127.0.0.1
A:你的 git 配了失效的全局代理。清除它:

git config--global--unset http.proxy git config--global--unset https.proxy

Q:手机端报Permission denied
A:脚本放在了~/storage/shared/外部存储下,安卓禁止执行。移到家目录:

mv~/storage/shared/Download/Obsidian_日记/obsidian_sync_termux.sh ~/

Q:git status 显示一堆.obsidian文件的改动?
A:这些配置目录被追踪了。从索引移除:

gitrm--cached-r.obsidian.trash git commit-m"停止追踪配置目录"

并确保.gitignore里有.obsidian.trash

Q:每次 push 都提示输入密码?
A:你用的是 HTTPS 地址。改用 SSH:

git remoteset-urlgitee git@gitee.com:你的用户名/obsidian.git

Q:仓库太大,Gitee 警告超 80% 配额?
A:历史里混进了大文件(如 Obsidian 程序、视频)。短期可用,长期需清理历史大文件(用git filter-repo或 BFG),或新建干净仓库重新推。

Q:手机端同步报CONFLICT (rename/delete)卡在 rebase 里?
A:这是双端同步最容易遇到的冲突类型。典型报错:

CONFLICT (rename/delete): 日记/2026/照片/1.22-1 1.jpg renamed to 05-日记/2026/照片/1.22-1 1.jpg in HEAD, but deleted in 8bcde41 (手机端同步 ...) error: could not apply 8bcde41... 手机端同步 ...

原因:同一文件在两端做了"不同方向"的操作——一端把它移动/重命名了位置(如电脑端把日记/改成05-日记/),另一端却把它删除了(如手机端同步时删了旧路径的文件)。git pull --rebase合并时不知道以谁为准,于是卡住,仓库进入"rebase 进行中"状态。

解决方法(手机端 Termux 里操作)

第 1 步,先中止卡住的 rebase:

cd~/storage/shared/Download/Obsidian_日记gitrebase--abort

若仍报there is already a rebase-merge directory,说明 git 的内部状态卡住了,手动清除:

rm-fr.git/rebase-merge

第 2 步,确认已退出 rebase 状态:

gitstatus

正常应显示分支状态,不再提示 “rebase in progress”。

第 3 步,以远程为准覆盖本地(前提是电脑端已是最终正确状态且已推到 Gitee):

gitfetch origingitreset--hardorigin/main

此时git status应显示Your branch is up to date with 'origin/main',冲突消失。

⚠️git reset --hard会丢弃手机端未推送的本地改动。若手机端有电脑上没有的新笔记,先别跑这步,应手动git stash保存后再处理。

每条命令的作用

  • git rebase --abort:取消正在进行的 rebase,仓库回到 rebase 前的状态,冲突标记清除,文件不丢。
  • rm -fr .git/rebase-merge:急救命令,手动删除 git 记录 rebase 状态的内部目录,强制退出"rebase 进行中"。
  • git fetch origin:只下载远程最新提交到本地,不合并、不改工作文件,先看清楚远程有什么。
  • git reset --hard origin/main:把本地分支硬重置到和 Gitee 的main完全一致(文件、历史全变一样),本地独有改动被丢弃。
  • git status:查看仓库状态,验证操作是否成功、是否还有冲突。

根因与预防:rebase 对"文件名改动(移动/重命名)"特别敏感,双端对同一文件做不同操作时极易冲突。预防措施:

  1. 一端重命名/移动文件后,先同步一次,等其他端拉取到位,再在另一端操作该文件。
  2. 手机端脚本可把git pull --rebase改为git pull(普通 merge),冲突时生成合并提交而非卡住;或手机端只拉不推(除非真在手机写了新笔记)。
  3. 大批量整理文件(如把日记/整体改名05-日记/)时,先在一端完成并推送,再在其他端同步,避免双端同时整理。

7. 进阶:让电脑自动同步(可选)

不想每次手动跑,可以让 Windows 定时任务帮你推。以管理员身份运行 PowerShell,执行:

$BASH="C:\Users\你的用户名\.workbuddy\vendor\PortableGit\bin\bash.exe"$SCRIPT="C:\Users\你的用户名\obsidian_sync_windows.sh"$action=New-ScheduledTaskAction-Execute$BASH-Argument"`"$SCRIPT`""$triggers= @((New-ScheduledTaskTrigger-Daily-At"09:00"),(New-ScheduledTaskTrigger-Daily-At"19:00"),(New-ScheduledTaskTrigger-AtLogOn))Register-ScheduledTask-TaskName"ObsidianAutoSync"-Action$action-Trigger$triggers-Description"Obsidian 自动同步"

注意:自动推送只适合"电脑端只增不改旧文件"的场景。若你会在手机端改同一文件,自动 push 可能覆盖,建议手动同步更稳妥。


8. 总结

整套方案的成本:0 元,只需要 Gitee 账号 + 一点配置时间。

核心文件清单:

  • 电脑:obsidian_sync_windows.sh(同步逻辑)+obsidian.cmd(命令入口)+ 桌面快捷方式
  • 手机:~/obsidian_sync_termux.sh(同步逻辑)+~/.bashrc里的 alias
  • 仓库根:.gitignore+.gitattributes(防脏、防冲突的灵魂配置)

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询