Skip to content

多端同步(git)

模型:每个端本地读写自己的 tasks.jsonlatd sync 时才和远端合并。不依赖任何服务端,私有 git 仓库(GitHub/Gitee/自建)皆可。

首次设置

bash
atd sync --setup <你的私有仓库URL>   # 直接配置 origin 远程(手敲 git remote add 也行)
atd sync                            # 首次:本地 commit 后 push,建立分支
$ atd sync
远程为空:已推送并建立 master 分支

新设备接入:

bash
git clone <仓库URL> ~/.atd
atd list        # 直接可用

日常同步

一端用一天,收工时 atd sync;另一端开工前 atd sync。TUI 里 :sync 等价。

$ atd sync
同步完成(远端新变更已合并)

冲突规则

tasks.jsonl 一行一任务、行首是 id,所以合并按 id 进行:

场景结果
两端各加了不同任务并集,全保留
两端改了同一任务modified 时间戳较新的一方
一端删除、另一端编辑删除优先(tombstone 语义)
其他文件冲突(config 等)保留本地版本

已实测双端并发修改场景,合并后文件干净、历史线性(rebase),无需手动解决冲突。

同步状态

bash
atd sync-status

输出分支、远程地址、未提交变更数、领先/落后提交数和最近一次提交,不用联网也能用。

数据安全

undo.jsonlarchive.jsonl.lock 不进版本库(.gitignore 自动生成)。远端仓库设为私有即可;数据里只有你自己的任务文本。

atd 源码是开源的,但你的任务数据建议放在私有仓库。代码开源、数据私有。

下一步

anothertodo — 轻量命令行 TODO 工具