git-fire/git-fire

GitHub: git-fire/git-fire

git-fire 是一个用 Go 编写的多仓库检查点 CLI 工具,通过单条命令自动发现、提交并推送多个 Git 仓库的工作状态,为跨仓库场景提供安全、可审计的批量备份能力。

Stars: 2 | Forks: 0

# Git Fire - 多仓库检查点 CLI

git-fire: flame and git node with wordmark git-fire: flame and git node with wordmark

Status: alpha Tests: 250+ Go 1.24.2 License: MIT Discord

`git-fire` 是一个用于检查点多个仓库的单条命令:发现、自动提交未提交的工作(可选),并在安全机制的保护下推送备份分支/远程仓库。它有助于为任何使用 Git 的用户自动化多仓库推送/检查点循环,从日常开发到文档、数据和运维工作流。 手动推送循环在现实生活中可能会静默失败(网络断开、身份验证问题或工具故障)。`git-fire` 为您提供了一条可审计的恢复路径,让您在需要跨多个仓库保持一致性时更加安心。 调用说明:当 `git-fire` 位于您的 PATH 上时,`git-fire` 和 `git fire` 是等价的。 ### TUI 截图 当前的 `git-fire` TUI:多仓库选择、单仓库状态和单屏检查点工作流。 ![显示仓库选择和状态视图的 git-fire TUI 截图](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/0c519be6eb205206.png) ## Alpha 状态 `git-fire` 是 alpha 版软件。核心的多仓库备份流程目前已可用。一些路线图项目(插件 CLI 自动加载和 `--backup-to`)被有意暂未接入。 ## 快速开始 ### 一行命令紧急模式 仅在紧急情况下使用此命令。`curl | bash` 会直接执行远程代码。 请先检查 `scripts/emergency.sh`,在时间允许的情况下,请优先使用带校验和的发布资产。 ``` # 将 v0.1.0-alpha 替换为你想要运行的 release tag curl -fsSL https://raw.githubusercontent.com/git-fire/git-fire/v0.1.0-alpha/scripts/emergency.sh | bash ``` ### 安装 | 方式 | 命令 | 平台 | |---|---|---| | Go | `go install github.com/git-fire/git-fire@latest` | 所有平台 (Go 1.24.2+) | | 二进制文件 | [GitHub Releases](https://github.com/git-fire/git-fire/releases) | 所有平台 | 在 alpha 阶段,`git-fire` 仅通过 Go install 和 GitHub 发布二进制文件进行分发。 Homebrew/Scoop 发布将在后续的稳定版本中启用。 #### PATH 设置(必需) 安装后,请确保二进制文件所在路径位于您的 `PATH` 中。 **Go install (Linux/macOS):** ``` export PATH="$HOME/go/bin:$PATH" ``` 将该行添加到 `~/.zshrc` 或 `~/.bashrc` 以使其永久生效。 **手动二进制安装 (Linux/macOS):** ``` # 解压 release archive 后: chmod +x git-fire sudo mv git-fire /usr/local/bin/ ``` **手动二进制安装 (Windows PowerShell):** ``` # 解压 release archive 后: New-Item -ItemType Directory -Force "$env:USERPROFILE\bin" | Out-Null Move-Item .\git-fire.exe "$env:USERPROFILE\bin\git-fire.exe" -Force ``` 如果 `$env:USERPROFILE\bin` 尚未存在于您的用户 `PATH` 中,请将其添加进去。 #### 验证安装 ``` git-fire --version which git-fire ``` 在 Windows PowerShell 中: ``` git-fire.exe --version Get-Command git-fire.exe ``` ### 首次运行 ``` # 先预览(安全) git-fire --dry-run --path ~/projects # 运行默认 streamed checkpoint git-fire ``` ## 适用人群 - **在多个仓库中使用 Git 的任何人:** 您希望在切换上下文、出差、系统维护或进行高风险更改之前,拥有一个可靠的检查点命令。 - **开发者和平台/基础设施工程师:** 您维护着许多代码/IaC/配置仓库,并希望获得一致且可审计的批量检查点。 - **Agent 工作流用户:** 您运行 Claude/Cursor 风格的编码会话,并希望拥有一个停止钩子安全网。 - **安全/运维从业人员:** 在系统拆除、维护或突发事件驱动的系统更改之前,您需要快速的状态保存。 - **使用 Git 的数据/研究/文档团队:** 您在多个仓库中跟踪分析、笔记本或文档,并需要可重复的备份行为。 - **非目标受众:** 已经具备单仓库检查点纪律的单仓库用户和单体仓库团队。 ## 使用场景 ### 日常开发者检查点 - 下班时 - 切换上下文前 - 出差前 - 大规模重构前 ### 非开发者多仓库检查点 - 从多个仓库发布文档/内容之前 - 数据分析环境更改之前 - 需要保存 Git 状态的操作维护窗口期之前 ### 创意与内容工作流 - 在发布前对多个写作/媒体/网站仓库进行检查点备份 - 在进行大规模编辑或迁移之前,快照保存跨仓库更改 - 为混合了技术与非技术贡献者的团队标准化备份行为 ### Agent 会话安全网 - 在会话结束时运行,以避免丢失未提交的 Agent 输出 - 保留日志以供会话后审查 - 在受保护的环境中使用 dry-run(预演) 详见 [docs/agentic-flows.md](docs/agentic-flows.md)。 ### IT/基础设施维护窗口 - 在维护前批量检查点备份工具和配置仓库 - 跨多个仓库的一致推送行为 - 跨运行的注册表驱动的可重复性 ### 安全与运维工作流 - 红队会话拆除 - 紫队演练在复盘前同步 - 事件响应状态保存 详见 [docs/security-ops.md](docs/security-ops.md)。 ### 紧急情况下的最后手段 如果你的构建真的“着火”了,运行 `git-fire`。 ## 集成与工具链 `git-fire` 可以集成到您现有的工具链、IDE 工作流和自动化钩子中(例如会话停止钩子、任务运行器、CI 辅助工具或包装脚本)。 如果您希望对特定工作流或应用提供一流的支持,请提交功能请求或发起 Pull Request。我们非常乐意支持您的用例。 ## 路线图方向:集成 + 冗余层 路线图的重点是实用的集成和紧急冗余层,特别是在高压时刻(例如 SSH 身份验证/密钥失败)的情况下。 目标是同时做到“偏执且偷懒”:一次性设置好层级,然后在关键时刻只需运行一条命令。 ## 主要功能 - **单命令多仓库检查点:** 发现仓库并从单条命令执行可重复的备份流程。 - **可选的未提交工作自动提交:** 根据您的选择包含未提交的更改,或使用 `--skip-auto-commit` 仅推送已提交的工作。 - **安全优先的冲突处理:** 在正常流程中避免强制推送,并在需要时创建备份分支。 - **Dry-run 规划:** 在进行更改前准确预览将要发生的操作。 - **可审计的执行日志:** 结构化的 JSON 日志使故障排除和运行后审查变得切实可行。 - **注册表驱动的可重复性:** 发现的仓库会在多次运行之间持久化保存,从而使您的工作流随着时间推移变得更加可靠。 ## 高级配置与行为 - **持久化仓库注册表:** 发现的仓库保存在 `~/.config/git-fire/repos.toml` 中,因此在未来的运行中会包含它们,除非明确忽略。 - **状态和身份验证检查:** `git-fire --status` 在完整运行之前,提供 SSH/身份验证和仓库就绪情况的快速快照。 - **执行模式控制:** `--dry-run` 用于零副作用的规划,`--fire` 用于交互式选择,`--path` 用于限定范围的发现。 - **仅注册表模式:** 使用 `--no-scan` 在本次运行中仅备份注册表中已有的仓库。 - **配置信任边界:** 默认仅加载 `~/.config/git-fire/config.toml`;使用 `--config ` 来选择性加载项目本地文件。 - **自动提交策略控制:** 选择是否通过默认行为包含包含未提交更改的工作树,或通过 `--skip-auto-commit` 跳过它们。 - **会话日志记录:** 每次运行都会在 `~/.cache/git-fire/logs/` 下写入结构化日志,以实现可审计性和便于调试。 - **工作流组合:** 与钩子、包装脚本、任务运行器或 CI 辅助脚本结合使用,以实现一致的团队或个人自动化。 ## 功能与使用场景映射 | 功能 | 日常开发 | 自动化代理 | IT/基础设施 | 红队 | 紧急情况 | |---|---|---|---|---|---| | 并行多仓库执行 | ✅ | ✅ | ✅ | ✅ | ✅ | | 持久化仓库注册表 | ✅ | ✅ | ✅ | ✅ | ✅ | | Dry-run 规划 | ✅ | ✅ | ✅ | ✅ | ✅ | | 密钥检测防护(默认阻止) | ✅ | ✅ | ✅ | ✅ | ✅ | | 结构化 JSON 日志 (`~/.cache/git-fire/logs/`) | ⚪ 可选 | ✅ | ✅ | ✅ | ⚪ 可选 | | `--status` SSH/仓库快照 | ✅ | ✅ | ✅ | ✅ | ⚪ 可选 | | 冲突安全的备份分支(正常流程中无强制推送) | ✅ | ✅ | ✅ | ✅ | ✅ | | 插件内部机制(`v0.2` CLI 自动加载目标) | 🔜 | 🔜 | 🔜 | 🔜 | 🔜 | ## 为什么在 Alpha 阶段值得信赖 - 正常流程中不使用强制推送。 - 冲突策略会在需要时创建备份分支(`git-fire-backup-*`)。 - Dry-run 提供无副作用的计划预览。 - 密钥检测默认会阻止自动提交/推送(如果您明确接受风险,可在配置中覆盖)。 - 结构化日志创建了机器可读的审计跟踪。 - 旨在降低手动工作流中静默失败模式(跨多个仓库的网络、身份验证和命令排序错误)带来的风险。 - 250+ 测试覆盖了核心的非 UI 包。 ## 核心命令 ``` # 默认 streamed checkpoint 流程 git-fire git fire # 非破坏性预览 git-fire --dry-run git-fire --fire-drill # TUI 选择器模式 git-fire --fire # 扫描特定 root git-fire --path ~/projects # 仅推送现有 commits(不自动 commit) git-fire --skip-auto-commit # 检查 auth + repo 状态 git-fire --status # 使用显式 config 路径(项目本地 opt-in) git-fire --config ./git-fire.toml # 仅在此运行中使用已知 registry repos git-fire --no-scan # 生成 config 模板 git-fire --init ``` ## 一劳永逸的可重复性 `git-fire` 将发现的仓库持久化保存在 `~/.config/git-fire/repos.toml` 中。一旦被发现,除非您明确忽略它们,否则这些仓库将保留在未来运行的范围内。 详见 [docs/REGISTRY.md](docs/REGISTRY.md)。 ## 通过插件扩展(`v0.2`) 插件支持正在积极开发中。命令插件的内部机制已经存在,但默认的 CLI 从配置自动加载是 `v0.2` 的目标。 详见 [docs/agentic-flows.md](docs/agentic-flows.md)。 ### TUI 颜色主题 您可以在 `git-fire --fire` 中重新定义火焰效果和边框/强调色: | 主题 | 风格 | |---------|-------| | `classic` | 原始橙色/黄色火焰 | | `synthwave` | 80 年代霓虹紫/粉/青 | | `forest` | 绿色余烬调色板 | | `arctic` | 冷色调青/冰调色板 | | 方式 | 如何操作 | |--------|-----| | TUI 内设置 | 按下 **`c`** → **Color profile** → `space` / `←` / `→` | | 配置文件 | 在 `[ui]` 下设置 `color_profile` | ``` [ui] show_fire_animation = true color_profile = "synthwave" ``` 自定义十六进制调色板已计划但尚未启用。未来的版本将允许用户为火焰和强调色自定义十六进制颜色列表。 ### 插件的可扩展性 命令插件允许您触发额外的备份/通知步骤(例如 S3 同步、通过 curl 调用 webhook、本地归档脚本)。 详见 [PLUGINS.md](PLUGINS.md) 和 [examples/plugins/s3-upload.md](examples/plugins/s3-upload.md)。 ## 文档 从 [docs/README.md](docs/README.md) 开始。 - Agentic 工作流:[docs/agentic-flows.md](docs/agentic-flows.md) - 安全和操作工作流:[docs/security-ops.md](docs/security-ops.md) - 行为规范:[GIT_FIRE_SPEC.md](GIT_FIRE_SPEC.md) - 贡献指南:[CONTRIBUTING.md](CONTRIBUTING.md) - 验证状态:[docs/REQUIREMENTS_VALIDATION.md](docs/REQUIREMENTS_VALIDATION.md) ## 安全提示 在执行广泛备份之前: - 将密钥排除在跟踪文件之外 - 依赖 `.gitignore` 和 `.git/info/exclude` 管理本地密钥文件 - 定期运行 `git-fire --dry-run` 以检查将被提交的内容 `git-fire` 包含密钥检测警告,但提交责任仍由用户承担。 ## 贡献 欢迎贡献。详见 [CONTRIBUTING.md](CONTRIBUTING.md)。 ## 许可证 MIT。详见 [LICENSE](LICENSE)。
标签:DevOps工具, EVTX分析, Git, Go语言, Python安全, TUI, 多仓库管理, 安全可观测性, 开发运维, 开源, 日志审计, 版本库生命周期, 版本控制, 程序破解, 紧急备份, 网络安全研究, 自动化备份, 自动提交