用途
git-sync 用于同步所有 Git 仓库,包括顶层 my-life 仓库和 spaces/ 目录下的项目。它帮助用户集中查看和管理多个仓库的分支状态、远程同步情况以及索引与文件系统之间的一致性。
主要能力
- 检查所有仓库和分支的状态,包括顶层仓库和 spaces/ 下的项目。
- 支持拉取所有分支的更新、推送本地提交、克隆缺失的仓库。
- 校验顶层仓库(my-life)的分支状态(领先/落后/脏/分叉)、未提交更改以及与远程的同步状态。
- 校验索引到文件系统:每个有代码的项目在 spaces/ 下路径存在,Git 远程地址与索引中的 remote 匹配,并检查分支状态。
- 校验文件系统到索引:发现 spaces/ 中未在 CLAUDE.md 列出的仓库,并通过 --suggest-additions 生成 YAML 建议。
- 生成结构化报告,包含顶层仓库、问题、仓库列表、未索引仓库和汇总统计。
- 使用状态符号标记:✓ 已同步、↓ 落后远程、↑ 领先远程、↕ 分叉、+ 仅本地、? 未索引、! 脏状态、✗ 错误。
使用方式
在 my-life 仓库根目录运行 Python 脚本:
python .claude/skills/git-sync/scripts/sync.py --check # 状态报告
python .claude/skills/git-sync/scripts/sync.py --pull # 拉取落后分支
python .claude/skills/git-sync/scripts/sync.py --push # 推送领先分支
python .claude/skills/git-sync/scripts/sync.py --clone # 克隆缺失仓库
python .claude/skills/git-sync/scripts/sync.py --json # JSON 输出
python .claude/skills/git-sync/scripts/sync.py --suggest-additions # 为未跟踪仓库生成 YAML
技能命令形式:
/git-sync # 检查所有仓库和分支的状态
/git-sync --pull # 拉取所有分支的更新
/git-sync --push # 推送所有分支的本地提交
/git-sync --clone # 克隆缺失的仓库
适用场景
- 需要同时管理多个 Git 仓库(如顶层仓库和多个子项目)时。
- 希望快速了解各仓库分支是否领先、落后、脏或分叉。
- 需要批量拉取或推送多个仓库的更新。
- 需要发现 spaces/ 中未纳入索引的仓库并生成添加建议。
限制
- 从不强制推送:如果分支分叉,仅报告并交由用户处理。
- 从不自动提交:脏仓库仅被报告,不会被修改。
- 拉取前先 fetch,确保远程信息最新。
- 仅允许快进合并:如果不是快进,拉取会安全失败。
- 跳过脏分支:如果有未提交更改,不会拉取。
- 错误处理:克隆失败需检查网络、SSH 密钥、权限;远程不匹配需更新 CLAUDE.md 或修复远程;分叉分支需手动合并/变基;缺失远程可能为仅本地仓库,跳过同步。
- 必须在 my-life 仓库根目录运行脚本。