Git 仓库管理
Git 仓库管理
功能概述
spark git 提供多仓库 Git 管理能力,涵盖批量更新、仓库初始化、子模块管理、Gitcode 远程配置、组织仓库克隆等功能。
核心能力
多仓库批量更新
扫描配置目录下所有 Git 仓库,执行批量 git fetch --all && git pull。适合同时维护多个仓库的日常更新。当 HTTPS 连接不稳定时,可加 --ssh 强制通过 SSH 更新(仅本次有效,不修改仓库配置的远程地址)。
spark git update -p ~/workspace
spark git update -p ~/workspace --ssh
Submodule 管理
将本地 GitHub 仓库或远程 URL 添加为 Submodule,支持初始化、状态查看、URL 重写、批量同步。
# 添加现有本地仓库为子模块
spark git submodule add ./path/to/repos
# 添加远程仓库为子模块
spark git submodule add https://github.com/user/repo
spark git submodule add https://github.com/user/repo --name custom-folder
# 初始化所有未克隆的子模块
spark git submodule init
spark git submodule init -j 4 # 4 路并行初始化
spark git submodule init --recursive # 含嵌套子模块
spark git submodule init --name spark-cli # 仅初始化指定子模块
# 查看子模块状态
spark git submodule status
# HTTPS -> SSH URL 转换
spark git submodule ensure-ssh
# 同步所有 Submodule 到最新
spark git sync ./my-mono
spark git sync --recursive
核心改进:
init分离了初始化和远程更新,不强行 merge。支持-j并行克隆status用表格展示每个子模块的初始化状态、commit、分支ensure-ssh一键将.gitmodules中所有 HTTPS URL 替换为 SSHgit init递归扫描嵌套目录(如projects/innate-ai-art),最深 3 层
Gitcode 远程集成
为仓库自动添加 Gitcode(https://gitcode.com)远程仓库,实现 GitHub ↔ Gitcode 双向同步。
spark git gitcode -p ~/workspace
仓库初始化
一键初始化 Git 仓库并创建 GitHub 远程:git init → 配置用户 → 递归扫描子目录(最深 3 层)添加 submodule → 生成 .gitignore → 初始提交 → gh repo create --push。
spark git init --owner variableway # 初始化并创建远程仓库
spark git init --owner variableway --private # 创建私有仓库
spark git init --skip-gh --owner variableway # 仅本地初始化
批量克隆
克隆 GitHub 组织或用户下所有仓库,或更新 README 中的仓库状态列表。
# 克隆组织仓库
spark git batch-clone variableway -o ./repos
# 克隆用户仓库
spark git batch-clone jackwener -o ./repos
# 更新组织状态
spark git update-org-status variableway --update-dot-github
Markdown 创建 Issue
统一使用 spark git issues 命令创建 GitHub Issue,支持两种输入模式:
- 目录模式:读取目录下所有 Markdown 文件,每个文件创建一个 Issue
- 任务模式:读取单个任务文件,按
# Task <id>/## Task <id>分段创建多个 Issue
# 目录模式
spark git issues -d ./docs -r variableway/spark-cli
# 任务模式
spark git issues -f tasks/issues/task-bug-fix.md -r variableway/spark-cli
# 自动识别当前仓库 + 预览
spark git issues -f tasks/issues/task-bug-fix.md --dry-run
批量推送更改
扫描所有 GitHub 仓库,自动提交并推送未提交的更改。
spark git push-all -p ~/workspace
- 跳过非 GitHub 仓库和无更改的仓库
- 遇到错误继续处理下一个仓库
Git 仓库扫描
递归扫描目录中的 Git 仓库,从 API 获取 stars、forks、语言等信息,并保存到 SQLite 数据库。
spark git scan ~/workspace
spark git scan . --skip-api --db ~/.innate/feeds.db
- 默认数据库路径:
~/.innate/feeds.db - 可通过
--db或配置项git.scanner.db自定义 - 设置
GITHUB_TOKEN可提高 GitHub API 速率限制
使用参数
| 参数 | 说明 |
|---|---|
-p, --path |
指定扫描目录(支持多个),默认 ["."] |
-p, --path |
包含 Git 仓库的目录,默认 . |
-n, --name |
子模块路径名称(远程模式),默认仓库名 |
-o, --output |
输出路径 |
--ssh |
使用 SSH 克隆(batch-clone) |
--owner |
GitHub 所有者(init),默认从配置文件读取 |
--private |
创建私有仓库(init) |
--skip-gh |
跳过 GitHub 远程创建(init) |
--include / --exclude |
包含/排除匹配模式(batch-clone) |
-r, --repo |
目标仓库(未指定时自动从当前仓库解析) |
-d, --dir |
文档目录(目录模式) |
-f, --file |
任务文件(任务模式) |
-l, --labels |
Issue 标签(逗号分隔) |
--dry-run |
仅预览,不创建 Issue |
-d, --db |
SQLite 数据库路径(scan),默认 ~/.innate/feeds.db |
--skip-api |
跳过 API 调用(scan) |
依赖
git命令行工具ghCLI(issues、batch-clone、update-org-status 需要 GitHub API 访问)