Rust · Terminal native · MIT

终端里的
Git 工作台

文件树、Diff、历史与搜索,收进一个界面。
键盘驱动,鼠标可用,打开仓库就能开始。

  • 无需 Electron
  • 默认不需要 Nerd Font
  • 单二进制

↔ 左右滑动看细节 · 点击图片打开原图

forge — ~/aurora 180 × 42
Forge 工作区截图:左侧是带 Git 状态的文件树,右侧显示带排版的 README Markdown 预览和快捷键栏。
真实界面:Files 文件树与 Markdown 预览(示例仓库 aurora),180 列终端。
Rust + Ratatui gix 读取 Git 无 Electron 23 种语言高亮 ANSI16 / 256 / Truecolor MIT License

01 / One workspace

文件、Git 和预览,
不再来回切换。

Forge 把一条仓库工作流收进左右两栏。左边是文件和变更,右边始终是你正在看的内容。

01

Files

按需展开的大仓库文件树,带 Git 状态、过滤、隐藏文件和紧凑目录。预览永远跟着当前文件。

  • 文件名模糊搜索与内容搜索
  • 新建、重命名、复制、移动、删除
  • 内置多行编辑器,保留换行与权限
02

Git

CHANGES 与 STAGED 清楚分开。文件、目录、Hunk 或单行,都可以精确暂存,不需要离开当前视图。

  • 并排 Diff,可展开成完整文件对比
  • 分支、提交历史、Stash、Worktree
  • Fetch / Pull / Push,未推送提交一眼可见
03

Preview

Markdown 排版、代码语法高亮、行号与 blame 在同一个阅读区。按 F3 在渲染结果和源码之间切换。

  • 23 种语言高亮,含 Python / TS / Go / SQL
  • Rust 与 Markdown 原生渲染,5 套主题
  • 拖拽选中,Ctrl+C 复制

↔ 左右滑动看细节 · 点击图片打开原图

forge — diff — src/workspace.rs hunk 1 / 3
Forge 并排 Diff 截图:左侧是 CHANGES、STAGED 和提交历史,右侧用左右两栏展示 Rust 代码的逐行新增。
真实界面:并排 Diff、CHANGES / STAGED 分组与提交历史(示例仓库 aurora)。

02 / Review with precision

审阅不只是看。
精确到一行。

先看整体,再落到细节。Diff 可以展开成完整文件对比:两侧各自编号,未改动的行也在。暂存仍以 patch 为准,按文件、目录、Hunk 或单行操作,取消暂存不会丢掉工作区里的编辑。

  • su 暂存 / 取消暂存选中的文件、目录或 Hunk
  • I 打开改动行列表,只操作当前一行
  • nN 在 Hunk 之间跳转
  • c 打开提交编辑器,主题与正文分开写,确认后提交
查看完整 Git 操作

↔ 左右滑动看细节 · 点击图片打开原图

forge — github-dark — web/src/render.ts 180 × 42
Forge 使用 GitHub Dark 主题的截图:左侧是展开的文件树,右侧 TypeScript 源码带语法高亮、行号与行内 blame。
真实界面:GitHub Dark 主题下的 TypeScript 高亮与行内 blame(示例仓库 aurora)。

03 / Make it yours

五套主题,
二十三种语言。

语法高亮只在你打开脚本时加载:纯 Rust 正则引擎,不链接 Oniguruma,也不加载整包 Sublime 主题。Markdown 与 Rust 继续走原生渲染。

  • 主题current、VS Code Dark、VS Code Black、GitHub Dark、Nord,在设置里即时切换并写入配置。
  • 语言Python、TypeScript、Go、C/C++、Java、C#、Ruby、PHP、SQL、YAML 等 23 种,按扩展名自动识别。
  • 扩展把 .sublime-syntax 放进 ~/.config/forge/syntaxes/,就能新增或覆盖语法。

04 / Commit with intent

提交之前,
再确认一次。

按 c 打开提交编辑器:主题单独一行,正文可以写多行。Ctrl S 进入确认态,Enter 才真正提交,Esc 随时退回草稿。

  • 草稿主题建议不超过 72 字符,正文最多 32 行,Tab 切换字段,↑↓ 移动正文行。
  • 确认Ctrl S 或 Ctrl Enter 预览完整消息,Enter 提交,Esc 回到编辑。
  • 边界只提交已暂存内容;没有 staged 变更时直接拒绝,不会顺手带上未暂存改动。

↔ 左右滑动看细节 · 点击图片打开原图

forge — commit composer Ctrl+S 确认
Forge 提交编辑器截图:主题与多行正文输入,底部提示 Ctrl+S 确认、Esc 取消,背景是已暂存文件的并排 Diff。
真实界面:提交编辑器叠加在已暂存文件的 Diff 上,主题与正文都在弹窗里完成。

05 / Keyboard first

键盘优先,
但不必背下所有键。

常用操作只需要一个字母。忘记时按 ? 打开帮助,按 : 或 Ctrl K 搜索全部命令,也可以在设置里重新绑定。

鼠标同样可用:单击选择、双击打开、右键菜单、滚轮滚动。

搜索文件名CtrlP
搜索文件内容 / 正则CtrlF
命令面板:
切换 Files / GitF1F2
Markdown 预览 / 源码F3
暂存 / 取消暂存su
提交c
全部快捷键?

06 / One continuous flow

从打开仓库,
到推送完成。

六个步骤,不必离开终端。上下文、选中位置和预览都会跟着你。

  1. 01

    打开

    在仓库目录运行 forge,根目录立即出现。

    forge
  2. 02

    浏览

    展开目录、过滤状态、预览 Markdown 或代码。

    F1
  3. 03

    搜索

    文件名模糊匹配,或直接搜索仓库内容与正则。

    Ctrl PCtrl F
  4. 04

    审阅

    并排 Diff 里按文件、Hunk 或单行完成暂存。

    F2
  5. 05

    提交

    主题单独一行,正文写多行,确认后提交暂存内容。

    c
  6. 06

    同步

    查看 ahead / behind,Fetch、Pull 或 Push。

    S

07 / Built for real repositories

为真实仓库而做。

不只是把 Git 命令搬进 TUI。Forge 在大仓库、中文路径和不稳定的终端环境里同样认真。

按需加载
首次只读取根目录,展开时才异步加载子目录。文件监听只注册已加载的位置,不递归扫描整个依赖树。
搜索不阻塞
文件名与内容搜索在后台运行,遵守 .gitignore 与排除目录。输入变化会取消旧查询,结果保持可用的行号。
写入有边界
Stage / Unstage 保留工作区编辑;Discard 与 Delete 需要单独确认;文件操作限制在当前工作区,不跟随越界符号链接。
Git 原生语义
使用 gix 读取状态与历史,使用 git CLI 执行写入。未推送的提交会对齐 upstream 标出,暂存与未暂存 gutter 可以分别关闭;分支、Stash、Worktree 都遵循 Git 自己的规则。
终端适配
支持 ANSI16、ANSI256 与 Truecolor;current、VS Code Dark / Black、GitHub Dark、Nord 五套主题即时切换;默认 Unicode 图标,无需 Nerd Font;处理 CJK 宽字符换行。
明确的失败
Git 错误、冲突和远程拒绝会保留原始信息,不把失败伪装成成功;批量文件操作会报告已完成与未执行的项目。

08 / Questions

开始之前。

Forge 与 lazygit、ranger 这类终端工具有什么区别?

lazygit 更专注 Git 操作,ranger 更专注文件浏览;Forge 把文件树、代码预览、Git Diff 和暂存提交放进同一个 TUI 工作区。它不是要替代完整编辑器或 Git 命令,而是减少文件与 Git 工具之间的切换。可阅读 英文使用指南 查看详细操作流程。

Forge 是什么?

Forge 是一个运行在终端里的 Git 工作台和文件管理器。它把文件树、文件预览、并排 Diff、暂存、提交、历史、分支、Stash、Worktree 和搜索放进同一个 TUI 界面,使用 Rust 构建。

Forge 和普通 Git 命令行有什么区别?

Forge 不替代 Git,而是在 Git 之上提供一个持续可见的工作区。你仍然使用熟悉的 Git 语义,但可以在一个界面里浏览文件、查看并排 Diff、按文件或 Hunk 暂存、审阅历史并完成远程同步。

运行 Forge 需要什么环境?

需要 Git,以及一个支持 ANSI 颜色、鼠标和剪贴板的终端。官方为 Linux(x86_64 / arm64)和 macOS(Intel / Apple Silicon)提供预编译二进制,一条 curl 命令即可安装,不需要 Rust 工具链;其他平台可以从源码构建。

怎么安装和升级 Forge?

运行 curl -fsSL https://creature-studio.github.io/forge/install.sh | sh,安装脚本会下载对应平台的预编译包、校验 SHA-256 并装到 ~/.local/bin。之后运行 forge update --check 查看是否有新版本,或运行 forge update 直接安装最新版本。

需要安装 Nerd Font 吗?

不需要。Forge 默认使用内置 Unicode 图标;也可以通过 FORGE_ICONS=nerd 启用 Nerd Font 图标,或使用 FORGE_ICONS=ascii 切换到 ASCII。

支持哪些语言的语法高亮?

内置 23 种语言:Python、TypeScript、JavaScript、Go、C/C++、Java、C#、Ruby、PHP、Lua、Kotlin、Swift、Shell、SQL、JSON、YAML、TOML、HTML、CSS、XML、Dockerfile、PowerShell,以及原生渲染的 Rust 与 Markdown。把 Sublime 的 .sublime-syntax 放进 ~/.config/forge/syntaxes/ 还能扩展或覆盖。

可以换配色主题吗?

可以。设置里提供 current、VS Code Dark、VS Code Black、GitHub Dark 和 Nord 五套主题,选中即时生效,并写入 ~/.config/forge/config.toml 的 theme 键。

Forge 会自动修改或覆盖我的仓库吗?

Forge 的写操作都有明确边界。Stage 和 Unstage 不会丢弃工作区编辑;Discard 和 Delete 需要单独确认;不会自动提交合并结果,也不会强制覆盖远程历史。

09 / Get started

把仓库交给
Forge。

Linux 与 macOS 均有预编译包。脚本会校验 SHA-256,把二进制放进 ~/.local/bin,之后用 forge update 保持更新。

quick start
# 安装最新版本(Linux / macOS)
curl -fsSL https://creature-studio.github.io/forge/install.sh | sh

# 之后随时升级
forge update --check
forge update

# 在仓库目录启动
cd ~/code/your-project
forge