RiverPlusGit - 浏览你win电脑上所有项目的Git状态

54 阅读14分钟

一眼看清本机所有 Git 仓库的当前状态 —— 一个跑在 Windows 上的「Git 仓库概览墙」。

01-main-window.png

三十多个仓库,一屏铺开:哪个干净、哪个一堆未提交、哪个有未推送的提交,颜色和符号直接告诉你。

关于截图:本文档里的截图统一使用一组演示仓库 —— 项目名、路径、提交说明都是虚构的,为的是不把本机真实的项目和目录暴露出去。界面本身与实际使用完全一致。


当前是内测版

这个版本还在调整中,功能和界面都可能变。

用着发现问题、或者想到更合适的做法,欢迎直接提出来 —— 发邮件到 RiverPlus2026@outlook.com 就行,说明怎么操作、看到了什么、期望是什么。内测阶段最需要的就是这些真实反馈。

软件里的「帮助 → 关于作者…」也能看到作者的主页、邮箱和技术论坛。

为什么做这个

硬盘里的 Git 仓库是会悄悄变多的。我的开发目录下面躺着三十多个,散在好几层目录里:有的是在跑的项目,有的是半年前的临时验证,有的是从别处拷过来改两行的副本。

问题是它们的状态是看不见的:

  • 这个仓库上次提交是三天前,还是三个月前?
  • 有几个仓库攒了一堆改动,自己都忘了?
  • 哪几个本地有提交但没 push?

平时要回答这些问题,只能一个个 cd 进去 git status。三十几个仓库就是三十几次操作,没人会这么干。于是就有了 RiverPlusGit:把「仓库列表」变成一堵能一眼扫完的墙。

它只做一件事 —— 看。不做提交、不做推送、不改你的仓库(唯一会写盘的只有一个可选功能,见后文)。


它长什么样

主界面就是上面那张图:卡片自适应换行,窗口拉大就能铺更多;每张卡片是一个仓库。

每张卡片长这样:

04-card.png

从上到下:仓库名 → 当前分支 → 完整路径 → 状态符号 + 最后提交时间 → 最后提交说明 → 分类;右下角有两个图标按钮。

其中中间那行彩色符号是整张卡片的重点,整行同色:红色 = 有未提交的改动,绿色 = 工作区干净。所以扫一眼颜色就够了,不用读字。

右下角那两个小图标是「就地跳转」用的,不用先右键:

图标动作
文件夹在资源管理器中打开该仓库目录
</>在 VS Code 中打开该仓库

选中了多个仓库时,这两个图标会作用于整批选中的仓库,不用一个个点。

搜索:按仓库名 / 分支 / 路径实时筛选。

02-search.png

分类筛选:胶囊按钮一键过滤,仓库可以拖到分类上归类 —— 多选之后整批一起拖。

03-category.png

多选:Ctrl 点选单个、Shift 点选一段、Ctrl+A 全选当前筛出来的、Esc 清空选择。选中的卡片右上角会出现对勾角标。

10-multi-select.png

卡片右键菜单:在资源管理器里打开、在 VS Code 中打开、复制路径、移动到分类、从扫描列表移除。选中多个时,菜单标题会自动变成「…(3 项)」,一次作用到整批。

05-card-context-menu.png

操作菜单:刷新(F5)、优化仓库索引、退出。

06-operation-menu.png

设置菜单:刷新间隔、卡片排序。父菜单标题会直接写上当前状态,不用展开也知道现在是什么设置。

07-settings-menu.png


功能一览

仓库状态一览

程序会把你指定的目录下所有 Git 仓库找出来,每个仓库一张卡片。不需要本机装 git,装上就能用。每张卡片汇总这些信息:

卡片元素含义
仓库名仓库所在的目录名
分支当前所在的分支(空仓库显示 (空仓库))
路径仓库在本机磁盘上的完整路径
状态符号改动情况汇总,见下方速查表
时间最后一次提交的时间
末行文字最后一次提交的说明
分类归属的分类,拖到分类栏按钮上即可改
右下角图标在资源管理器中打开 / 在 VS Code 中打开

多选与批量操作

仓库一多,一个个归类、一个个复制路径就很烦。所以卡片支持多选,选完之后所有操作都是批量的:

操作怎么做
选一个直接点卡片
加/减选Ctrl + 点卡片
连选一段Shift + 点卡片
全选当前可见Ctrl + A(只选筛选结果里的,不是全部仓库)
清空选择Esc,或点卡片区外的空白
整批归类从任一选中的卡片上按住拖动,拖到顶部分类按钮上松手
整批打开资源管理器右键 →「在资源管理器中打开(N 项)」,或点卡片右下角文件夹图标
整批在 VS Code 打开右键 →「在 VS Code 中打开(N 项)」,或点卡片右下角 </> 图标
整批复制路径右键 →「复制 N 条路径」(一行一个,方便粘到别处)
整批移除右键 →「从扫描列表移除这 N 个目录」

两个细节值得一提:

  • 从选中的卡片上拖,带的是整批;从没选中的卡片上拖,只带这一张。 只有一条规则,不用记两套。
  • 点击和拖拽不会互相打架。 在已选中的多项里点一下,会先等鼠标抬起来 —— 如果你只是点了点,就收拢成「只选中这一张」;如果你按住拖走了,就是整批拖拽。手抖也不会误判成拖拽(有系统的最小拖动距离兜底)。

状态栏会实时显示「已选 N 个 · 可拖到分类批量归类」。

刷新(F5)不会丢掉你的选择,选择会跟着仓库路径一起保留下来。

分类管理

  • 分类栏是动态生成的:全部 + 默认 + 你自定义的分类 + + 添加。
  • 拖卡片到分类按钮上即可归类;也可以右键卡片 →「移动到分类」。选中多个仓库后,整批拖一次就全归好了。
  • 自定义分类左侧有个 ≡ 手柄,拖动可以排序;右键分类可以删除(该分类下的仓库自动回落到「默认」)。
  • 默认 分类不可删除,新扫描出来的仓库都先落在这里。
  • 上次停在哪个分类会被记住 —— 关掉程序再打开,还停在那个分类上,不用每次重新点一遍。如果那个分类后来被删了,就自动退回「默认」。
  • 归类结果会被记住,不会因为重扫而丢失。

搜索与排序

搜索框实时过滤,匹配仓库名 / 分支 / 路径三者之一。

排序支持 5 种模式,并且切换模式时会自动给一个常用方向(比如「最近提交」和「改动量」默认倒序),省得还要手动翻一次:

排序模式依据默认方向
最近提交最后一次提交时间倒序(最新在前)
名称仓库名正序
改动量改动文件数合计倒序(最脏在前)
分类先按分类,再按名称正序
扫描顺序仓库完整路径正序

扫描目录管理

程序会在你配置的根目录下递归查找 Git 仓库。菜单「目录 → 管理扫描目录…」打开这个弹窗:

09-scan-paths.png

  • 可以加多个根目录,顺序不影响结果。
  • 递归深度 1~12 可调(默认 4)。
  • 每一行都会实时校验:绿色 ✓ 有效 / 橙色 已被上级目录包含 / 红色 ⚠ 目录不存在,避免配错了还不知道。
  • 添加一个上级目录时,会提示是否顺手清理被它覆盖的冗余子目录。
  • 还有「恢复默认」,会重新探测常见的开发目录。

打开就能看,不用等

程序启动时会先用上次的扫描结果把卡片墙立刻画出来,同时后台重新扫一遍,结果回来再覆盖。所以除了第一次运行,之后每次打开基本是瞬间铺满的。

状态栏会如实标注数据来源,不会假装缓存是最新的:

缓存于 09-17 15:04 · 后台更新中…      ← 先拿缓存画出来的
已更新 15:13:05 · 耗时 1115 ms        ← 后台扫描完成

自动刷新间隔可选 2 / 5 / 10 / 30 秒,默认关闭。

加载提示也做了刻意处理:活儿干得快就压根不显示,一旦显示就至少停留一会儿,不会闪一下就没。列表里已经有卡片时只亮顶部一条细进度条,不遮挡、可以继续操作。

优化仓库索引

菜单里有个不太起眼但很实用的功能。有些仓库因为自身的索引信息过期,读取状态会明显变慢(本机实测:三十几个仓库里有 3 个要 4 秒,其余都在 1 秒以内)。这个功能会把「读取缓慢」的仓库单独挑出来修复一遍,之后扫描就快了。

它是整个程序唯一会写你的仓库文件的功能,而且:

  • 只写 Git 自己的索引文件(.git/index),不碰工作区文件、不碰暂存区内容、不碰提交历史;
  • 执行前有确认弹窗,把上面这几条讲清楚;
  • 跑完会给出前后耗时对比,效果直接看得见。

其他细节

  • 窗口位置、尺寸和上次停在的分类都会被记住,换了显示器也不会跑到看不见的地方。
  • 多屏不同缩放下界面不糊,副屏接上就能用。
  • 支持超长路径:260 字符以上的深目录仓库也能扫到。
  • 便携:配置放在程序同目录的 config 里,整个文件夹拷走配置跟着走。
  • 标题栏带版本号,一眼知道自己在跑哪个版本。

状态符号速查

程序里「帮助 → 图标与状态说明…」有个专门的弹窗,卡片上那些符号的含义都集中列在这里:

08-legend.png

符号含义
↑N本地比远程多 N 个提交,需要推送(push)
↓N本地比远程少 N 个提交,需要拉取(pull)
⚑N已暂存(staged)的改动 N 个
+N新增的文件 N 个
~N已修改的文件 N 个
-N已删除的文件 N 个
→N重命名的文件 N 个
?N未跟踪的新文件 N 个(还没 git add)
!N工作区里丢失的已跟踪文件 N 个
干净没有未提交的改动
读取失败仓库打不开或读取状态时出错

符号按固定顺序拼接(先远程差异,再暂存区,再工作区),所以同一类改动在每张卡片上的位置是一致的,横向扫视时很容易比较。


下载与运行

网盘下载 :

夸克网盘

内测版压缩包放在这个文件夹里,后续更新也发在这里。

环境要求:Windows 10 / 11,x64。免安装,解压即用。

程序提供两种分发形态。目录名带上版本号和阶段标签(RiverPlusGit-<形态>-v<版本号>-<阶段>),当前是 v1.0.0-内测版:

目录运行环境说明
RiverPlusGit-Framework-v1.0.0-内测版需装 .NET 10 桌面运行时框架依赖版,体积最小。包内已附带运行时安装包和《运行环境说明.txt》,装上就能用
RiverPlusGit-PrivateRuntime-v1.0.0-内测版免装私有运行时版,运行时收在自己的 runtime 子目录里,解压即用,根目录只留几个文件

阶段标签会跟着版本一起变(内测版 → 公测版 → 正式版);到正式版时标签去掉,目录名就只剩 v1.0.0。

框架依赖版怎么用:解压后先双击包里的 windowsdesktop-runtime-…-win-x64.exe 装上运行环境(一路下一步,不需要联网也不需要重启),再双击 RiverPlusGit.exe 就行。包根目录里的《运行环境说明.txt》写的是同样的步骤 —— 转手给别人时,把整个文件夹一起给过去即可。

首次启动会自动探测常见的开发目录作为扫描根。如果没探测到,用菜单「目录 → 快速添加目录…」自己选一个就行。


配置文件

配置目录默认是程序同目录下的 config,整个文件夹拷走配置跟着走。

config/
├── reposettings.json     # 扫描目录、深度、分类、分类映射、排序、当前分类、窗口位置
├── repocache.json        # 上次扫描结果缓存(首屏秒开用)
└── logs/
    └── settings.log      # 配置读写失败时的日志

reposettings.json 是给人看、可以手改的:

{
  "RepositoryPaths": ["D:\projects"],
  "ScanMaxDepth": 4,
  "AutoRefreshSeconds": 0,
  "Categories": ["默认", "项目", "GitHub", "工作", "其他"],
  "CurrentCategory": "工作",
  "RepoCategoryMap": {
    "D:\projects\acme-web": "项目"
  },
  "SortMode": "recent",
  "SortDescending": true,
  "VsCodePath": ""
}

CurrentCategory 是上次退出时停在哪一个分类(分类栏里高亮的那个)。程序关掉再打开会回到这个分类上,不用每次重新点一遍。它记的是分类名而不是第几个 —— 分类可以增删、可以拖动排序,记下标下次就对不上了。如果这个分类后来被删了,程序会自动退回「默认」。

VsCodePath 是「在 VS Code 中打开」用的启动器路径,平时留空就行:程序会自己去找 —— 先看 PATH 里的 code,再探常见的安装位置(用户级安装、系统级安装、Insiders 版都认)。只有都找不到时,才会弹一次文件选择框让你手动指定,选完就记在这里,下次不用再选。

菜单「目录 → 打开配置文件位置」可以直接在资源管理器里定位到它。

手改坏了也不用担心:程序会把读到的值整理一遍再使用 —— 路径去重、补上「默认」分类、CurrentCategory 指向的分类不存在时退回「默认」、深度限制在 1~12、不认识的排序方式回落到默认值,不会因为配置写错就起不来。


已知限制

  • 只支持 Windows。暂时没有跨平台计划。
  • 只读定位。不做提交、推送、拉取、切换分支。唯一会写仓库的是「优化仓库索引」,且只写 Git 自己的索引文件。
  • 状态是汇总,不是细节。卡片告诉你「有 4 个文件改了」,具体是哪 4 个还得去 git status。这是刻意的取舍:概览要的是横向可比,不是纵向详尽。
  • 「在 VS Code 中打开」依赖能找到 VS Code。绿色版 / 解压到非标准目录的安装,程序可能探测不到,这时会弹一次文件选择框让你手动指定一次(见配置文件里的 VsCodePath)。
  • 「优化仓库索引」需要本机有 git。PATH 里找不到 git 时会明确提示并跳过,其余功能不受影响。

反馈与建议

这个工具是按「我自己用得上」的思路做的,所以很多取舍可能只对了一半。内测版尤其需要你的反馈。

欢迎提的包括但不限于:

  • 用起来别扭的地方 —— 哪一步多余、哪个按钮位置反直觉、哪个信息你其实从来不看;
  • 判断错的地方 —— 状态符号显示得和 git status 不一致,或者某个仓库读不出来;
  • 想不通的地方 —— 文档没说清楚、界面上某个符号看不懂。

反馈时如果能带上怎么操作、看到了什么、期望是什么这三条,会好定位很多。截图更好。

发到 RiverPlus2026@outlook.com 就行。


关于作者

程序员江涛_RiverPlus —— 平时写些自己用得上、顺手也想给别人用的小工具。

主页home.riverplus.top
邮箱RiverPlus2026@outlook.com
技术论坛juejin.cn/column/7678…

由于是个人独立开发的软件,难免有些小问题。如有任何疑问或 Bug 反馈,欢迎发邮件给我。

程序里「帮助 → 关于作者…」有同样的联系方式,点一下就能打开。


最后

这个项目的起点很小 —— 只是想知道「我那堆仓库现在都什么情况」。

如果你也在 Windows 上攒了一堆 Git 仓库,希望它能帮你少敲几次 git status。

内测阶段,欢迎把用着不顺手的地方告诉我。