Obsidian 三端同步完整流程:电脑、手机、平板通过 Gitee 实时同步
适用场景:你有两台设备------Windows 电脑 + 安卓手机(平板同理),想用 Obsidian 写笔记,希望两端内容一致,改一处另一处自动跟上。 本文以 Gitee 作为中转仓库,电脑端一键推送,手机端 Termux 一句命令拉取,全程免费、无需第三方同步服务。
0. 核心思路(先看懂再动手)
同步的本质不是"Obsidian 自己同步",而是"用 Git 把笔记文件夹变成代码仓库,推到 Gitee,两端再各自 pull/push"。
perl
电脑(写笔记)──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 账号(gitee.com) |
| 网络 | 能正常访问 Gitee(无需 VPN,国内直连) |
1.2 在 Gitee 上建仓库
-
登录 Gitee → 右上角 + → 新建仓库。
-
仓库名称随意(如
obsidian),选 私有 ,初始化 不勾选 Readme(保持空仓库)。 -
创建后,记下仓库的 SSH 地址 ,形如:
scssgit@gitee.com:你的用户名/obsidian.git
重要:必须用 SSH 地址,不要 HTTPS。SSH 配一次免密,后面永不再输密码。
2. 电脑端配置
2.1 确认笔记目录是 Git 仓库
假设你的笔记在 D:\Obsidian\笔记。打开 PowerShell,执行:
powershell
cd D:\Obsidian\笔记
git status
如果提示"不是 git 仓库",先初始化并关联远程:
powershell
git init
git remote add gitee git@gitee.com:你的用户名/obsidian.git
注意:远程名我用
gitee而不是默认的origin,避免以后混淆。你也可以用origin,脚本里对应改一下即可。
2.2 配置 .gitignore(关键!避免仓库变脏)
Obsidian 会产生大量配置/缓存文件(.obsidian、.trash 等),这些不该同步,否则两端会互相覆盖设置、仓库永远"脏"。
在笔记根目录创建 .gitignore:
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:
gitattributes
* text=auto eol=lf
并在 Git 里关闭自动转换:
powershell
git config core.autocrlf false
2.4 生成 SSH 密钥并绑定 Gitee
powershell
ssh-keygen -t ed25519 -C "你的邮箱"
# 一路回车,不用设密码
然后查看公钥并复制到 Gitee:
powershell
cat ~/.ssh/id_ed25519.pub
- 打开 Gitee → 右上角头像 → 设置 → SSH 公钥 → 粘贴保存。
- 测试连接:
powershell
ssh -T git@gitee.com
# 看到 Hi 你的用户名! 即成功
2.5 写同步脚本
创建 C:\Users\你的用户名\obsidian_sync_windows.sh:
bash
#!/bin/bash
# Obsidian 电脑端一键同步(仅 Gitee)
NOTE_DIR="D:/Obsidian/笔记"
REMOTE="gitee"
BRANCH="main"
cd "$NOTE_DIR" || { echo "❌ 目录不存在"; exit 1; }
# 1. 拉取远程
git pull "$REMOTE" "$BRANCH" --rebase --no-edit || {
echo "⚠️ 拉取冲突,请手动解决后重跑"; exit 1; }
# 2. 提交本地改动
git add .
if ! git diff --cached --quiet; then
git commit -m "电脑端自动同步 $(date '+%Y-%m-%d %H:%M:%S')"
fi
# 3. 推送
git push "$REMOTE" "$BRANCH" || {
echo "❌ 推送失败,检查网络/凭据"; exit 1; }
echo "✅ 同步完成!"
注意
NOTE_DIR用正斜杠D:/Obsidian/笔记,Git Bash 里反斜杠会出错。
2.6 做成"双击就能同步"
方式 A:桌面快捷方式
-
桌面右键 → 新建 → 快捷方式。
-
目标填(一行):
arduino"C:\Users\你的用户名\.workbuddy\vendor\PortableGit\bin\bash.exe" "C:\Users\你的用户名\obsidian_sync_windows.sh"如果你的 Git 装在别处,把路径换成
C:\Program Files\Git\bin\bash.exe。 -
命名如
obsidian同步,以后双击就同步。
方式 B:命令行输一个词
-
创建
C:\Users\你的用户名\obsidian.cmd:bat@echo off "C:\Users\你的用户名\.workbuddy\vendor\PortableGit\bin\bash.exe" "C:\Users\你的用户名\obsidian_sync_windows.sh" -
把
C:\Users\你的用户名加进系统 PATH(设置 → 关于 → 高级系统设置 → 环境变量 → 用户 PATH → 新建)。 -
重启终端后,任意位置输入
obsidian回车即可同步。
2.7 首次推送
powershell
cd D:\Obsidian\笔记
git add .
git commit -m "初始提交"
git push gitee main
如果远程默认分支是
master而不是main,把脚本和命令里的main换成master。
3. 手机端配置(Termux)
3.1 安装与授权存储
- 应用商店装 Termux。
- 打开 Termux,先给存储权限(让 Termux 能访问手机文件):
bash
termux-setup-storage
会弹窗请求权限,允许。之后 ~/storage/shared/ 就映射到手机内部存储。
- 装 Git:
bash
pkg update && pkg install -y git openssh
3.2 把 Gitee 仓库克隆到手机
假设你的 Obsidian 笔记库在手机上的路径是 Download/Obsidian_日记:
bash
cd ~/storage/shared/Download
git clone git@gitee.com:你的用户名/obsidian.git Obsidian_日记
克隆后,
Obsidian_日记文件夹就是 git 仓库,直接用 Obsidian 打开它即可。
3.3 手机端 SSH 免密
bash
ssh-keygen -t ed25519 -C "手机端"
cat ~/.ssh/id_ed25519.pub
把公钥同样添加到 Gitee 的 SSH 公钥里(可以和多台设备共用一个,也可以分别添加)。测试:
bash
ssh -T git@gitee.com
3.4 写手机端同步脚本
重要 :脚本不能 放在
~/storage/shared/下(安卓外部存储不允许执行脚本),必须放 Termux 家目录~。
bash
nano ~/obsidian_sync_termux.sh
内容:
bash
#!/bin/bash
# Obsidian 手机端同步(Termux)
NOTE_DIR="$HOME/storage/shared/Download/Obsidian_日记"
REMOTE="origin"
BRANCH="main"
cd "$NOTE_DIR" || { echo "❌ 目录不存在 $NOTE_DIR"; exit 1; }
# 1. 先提交本机改动
git add .
if ! git diff --cached --quiet; then
git commit -m "手机端同步 $(date '+%Y-%m-%d %H:%M:%S')"
fi
# 2. 拉取 Gitee
git pull "$REMOTE" "$BRANCH" --rebase --no-edit || {
echo "⚠️ 拉取冲突,请手动解决后重跑"; exit 1; }
# 3. 若有本机提交,推送回 Gitee(双向同步)
if [ -n "$(git log "$REMOTE/$BRANCH..HEAD" 2>/dev/null)" ]; then
git push "$REMOTE" "$BRANCH" || {
echo "❌ 推送失败"; exit 1; }
fi
echo "✅ 手机端同步完成!"
保存后加执行权限:
bash
chmod +x ~/obsidian_sync_termux.sh
3.5 添加同步口令
编辑 ~/.bashrc(或 ~/.zshrc):
bash
echo "alias obsidian='~/obsidian_sync_termux.sh'" >> ~/.bashrc
source ~/.bashrc
以后在 Termux 里输入 obsidian 回车,就自动同步。
若 alias 不生效(某些 Termux 版本),直接用
bash ~/obsidian_sync_termux.sh也能跑。
4. 平板端
平板和手机完全一样:装 Termux + Obsidian,克隆同一个 Gitee 仓库,放同样的脚本和 alias 即可。三端共享一个 Gitee 仓库,谁改谁 push,其他人 pull 就跟上。
5. 日常使用规范(避免冲突的关键)
- 同步前先同步:开始写之前先跑一次同步,拿到最新内容。
- 写完就同步:离开设备前跑一次,把改动推上去。
- 大文件要谨慎 :图片、视频会撑大仓库。Gitee 免费仓库有容量上限(约 1GB),超了会警告甚至拒收。建议:
- 图片尽量压缩后再放;
- 超大视频不要进笔记库,用云盘分享链接代替。
- 冲突怎么办 :极少数情况两端同时改了同一文件,pull 会报冲突。常见两类:
- 内容冲突 :同一文件两端都改了同一行,文件里出现
<<<<<<</=======/>>>>>>>标记,手动编辑保留正确内容后git add . && git commit再 push。 - rename/delete 冲突 :一端把文件移动/重命名了,另一端却删了它,
git pull --rebase会卡在 rebase 中间(见 FAQ 对应条目)。这种不能靠编辑文件解决,需git rebase --abort后处理。
- 内容冲突 :同一文件两端都改了同一行,文件里出现
- 不要在中转仓库里手改文件:Gitee 网页上直接编辑笔记容易和本地冲突,尽量只在本地 Obsidian 里改。
6. 常见问题(FAQ)
Q:push 时报 Failed to connect to gitee.com port 443 via 127.0.0.1? A:你的 git 配了失效的全局代理。清除它:
powershell
git config --global --unset http.proxy
git config --global --unset https.proxy
Q:手机端报 Permission denied? A:脚本放在了 ~/storage/shared/ 外部存储下,安卓禁止执行。移到家目录:
bash
mv ~/storage/shared/Download/Obsidian_日记/obsidian_sync_termux.sh ~/
Q:git status 显示一堆 .obsidian 文件的改动? A:这些配置目录被追踪了。从索引移除:
powershell
git rm --cached -r .obsidian .trash
git commit -m "停止追踪配置目录"
并确保 .gitignore 里有 .obsidian 和 .trash。
Q:每次 push 都提示输入密码? A:你用的是 HTTPS 地址。改用 SSH:
powershell
git remote set-url gitee git@gitee.com:你的用户名/obsidian.git
Q:仓库太大,Gitee 警告超 80% 配额? A:历史里混进了大文件(如 Obsidian 程序、视频)。短期可用,长期需清理历史大文件(用 git filter-repo 或 BFG),或新建干净仓库重新推。
Q:手机端同步报 CONFLICT (rename/delete) 卡在 rebase 里? A:这是双端同步最容易遇到的冲突类型。典型报错:
go
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:
bash
cd ~/storage/shared/Download/Obsidian_日记
git rebase --abort
若仍报 there is already a rebase-merge directory,说明 git 的内部状态卡住了,手动清除:
bash
rm -fr .git/rebase-merge
第 2 步,确认已退出 rebase 状态:
bash
git status
正常应显示分支状态,不再提示 "rebase in progress"。
第 3 步,以远程为准覆盖本地(前提是电脑端已是最终正确状态且已推到 Gitee):
bash
git fetch origin
git reset --hard origin/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 对"文件名改动(移动/重命名)"特别敏感,双端对同一文件做不同操作时极易冲突。预防措施:
- 一端重命名/移动文件后,先同步一次,等其他端拉取到位,再在另一端操作该文件。
- 手机端脚本可把
git pull --rebase改为git pull(普通 merge),冲突时生成合并提交而非卡住;或手机端只拉不推(除非真在手机写了新笔记)。 - 大批量整理文件(如把
日记/整体改名05-日记/)时,先在一端完成并推送,再在其他端同步,避免双端同时整理。
7. 进阶:让电脑自动同步(可选)
不想每次手动跑,可以让 Windows 定时任务帮你推。以管理员身份运行 PowerShell,执行:
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(防脏、防冲突的灵魂配置)