gfold:388⭐的 Rust 多仓库 Git 状态追踪器

当你的 ~/projects~/src 目录下躺着几十个 Git 仓库时,逐个进入目录执行 git status 检查状态是一场噩梦。gfold 是一款用 Rust 编写的 CLI 工具,它可以在一秒钟内扫描并展示所有仓库的状态——哪些有未提交的更改、哪些落后于远程、哪些干净如新。

项目概览

属性内容
GitHubnickgerace/gfold
Stars388
语言Rust
特点并行扫描、只读操作、配置持久化
最后更新1周前

它解决了什么问题

现代开发者的工作流通常涉及多个项目:

  • 主项目、工具库、配置文件的 repo 分散在不同目录
  • 想确认「今天修改了哪些地方」需要逐个 cd + git status
  • 有些 repo 可能已被修改但忘记提交,有些可能落后于上游
  • CI/CD 脚本需要批量检查多个仓库的状态

gfold 的设计哲学是「只读、快速、并行」。它不会修改任何文件,只是给你一个清晰的全景图。

核心特性

并行扫描

gfold 使用 rayon 库实现并行处理,基于 git2-rs 进行 Git 操作。无论你有 10 个还是 100 个仓库,都能在瞬间完成扫描。

多种显示模式

默认输出是一个清晰的表格,展示每个仓库:

  • 状态:Clean(干净)、Unclean(有未提交更改)、Unpushed(有未推送提交)
  • 分支:当前所在分支
  • 路径:相对于扫描根目录的路径

还支持「经典模式」(classic display mode),以更紧凑的格式输出,适合在 CI 或脚本中使用。

配置文件支持

如果你经常在特定目录运行 gfold,可以创建配置文件避免重复输入路径:

# 生成配置文件模板
gfold -d classic ~/projects --dry-run > ~/.config/gfold.toml

配置文件支持:

  • 默认扫描路径(支持多个)
  • 默认显示模式
  • 颜色输出开关

安全设计

gfold 只读取文件系统,永不写入。你可以在任何环境(包括生产服务器)放心使用,不必担心意外修改仓库状态。

快速开始

# 通过 cargo 安装
cargo install gfold

# 或通过 Homebrew (macOS/Linux)
brew install gfold

# 在当前目录扫描所有 Git 仓库
gfold

# 扫描指定目录
gfold ~/projects

# 使用经典模式输出
gfold -d classic

# 忽略配置文件,使用默认设置
gfold -i

对比:gfold 与其他 Git 管理工具

工具Stars定位核心差异
lazygit58k+TUI Git 客户端功能全面,适合深度操作单个仓库
ghq12k+仓库管理器专注于仓库的克隆和组织
myrepos700+多仓库批处理支持批量执行任意命令
gfold388状态概览快速、只读、一览全局

gfold 的定位是「状态仪表盘」而非「操作工具」。它不会取代 lazygit 或 tig,而是填补了「快速查看多个仓库状态」这个空白场景。

适用场景

  • 每日站会前:快速确认昨天修改了哪些项目
  • 周末整理:检查有哪些实验性项目的更改忘记提交
  • CI 健康检查:在构建前确认所有依赖仓库处于干净状态
  • 新员工 onboarding:快速了解团队项目的整体状态

当前限制

  • 只读设计:如果你需要批量执行 Git 操作,仍需配合其他工具
  • 无交互能力:发现状态异常后,需要手动进入目录处理
  • 功能克制:388 stars 说明它专注于单一功能,不会变成万能工具

总结

gfold 是一款「小而美」的工具,它不做很多事情,但把「多仓库状态查看」这件事做到极致。Rust 带来的性能优势让它在扫描大量仓库时依然迅捷,只读设计确保了使用安全。

对于维护多个项目的开发者来说,gfold 是 lsgit status 之间缺失的那一环。388 stars 说明它还处于小众阶段,但正是这种专注让它值得一试。

属性内容
仓库https://github.com/nickgerace/gfold
许可证Apache-2.0
语言Rust
维护者@nickgerace