记不住 Git 命令?forgit 让操作变成模糊搜索
记不住 Git 命令?forgit 让操作变成模糊搜索
日常用 Git,头疼的不是 merge 冲突,是记不住命令。git log 翻半天找不到那个 commit,git stash list 输出一串 hash 谁也认不出,git checkout 分支名打错一个字母就得重来。更别提 git reflog 密密麻麻的输出,或者 git blame 找一行代码的修改记录,眼都看花了。
forgit 就是解决这些问题的。它是一套基于 fzf 的 Git 交互工具,把三十多个 Git 操作包装成了带模糊搜索的界面。fzf 是终端里的模糊查找利器,forgit 把它跟 Git 深度结合,相当于给每个 Git 子命令都加了一个可视化选择器。


forgit 本质上是一套 Shell 函数,把 git add、git log、git diff、git checkout 这些命令接入了 fzf 的交互界面。你不再需要精准敲出分支名或 commit hash,输入几个字母就能定位到结果。左右分栏布局也很直观:左边是可选列表,右边是实时预览。
比如 ga 替代 git add,列出所有未暂存文件,Tab 键多选,回车确认暂存。glo 替代 git log,左右分栏展示提交记录和 diff 详情,按 Ctrl+S 切换排序。gcb 让你在几十个分支里秒切,gco 帮你从历史 commit 中挑出要 checkout 的目标,gbl 让 git blame 变成了可搜索的列表。gd 支持指定版本对比,比如 gd HEAD~ 或者 gd v1.0 README.md。
总共覆盖 25 个 Git 子命令,从最常用的 add、log、diff、blame 到进阶操作的 stash、cherry-pick、rebase,连 worktree 和 fixup/squash 也有对应的交互版本。每个命令的 fzf 选项和 git 参数都能通过环境变量分别调整,比如给 gcb 设置按提交时间排序,或者给 glo 绑定自定义快捷键。
安装不复杂。Homebrew 用户:
brew install forgit
然后在 shell 配置文件里 source 对应插件文件即可。zplug、zinit、antigen 这类 zsh 插件管理器,一行配置搞定。AUR 用户通过 forgit 或 forgit-git 包安装。fzf 版本需要在 0.60.0 以上。
装完 ga、glo、gd 这些两三个字母的别名直接可用。别名可以自定义,把 forgit_log 从默认的 glo 改成你喜欢的前缀,设一个环境变量就行。不想用别名也可以通过 git forgit log 子命令形式使用,甚至可以注册成 git alias。
底层是 fzf,快捷键继承得很自然:Tab 切换选中状态、Ctrl+R 反选、Ctrl+Y 复制 commit hash、Alt+E 在编辑器打开文件,Alt+W 切换预览窗口的自动换行。习惯用 delta 看 diff 的话,设置 FORGIT_DIFF_PAGER 就能接管预览;用 bat 做语法高亮,设置 FORGIT_IGNORE_PAGER 即可。
项目拿到近 5000 Star,覆盖 Bash、Zsh、Fish 三种 Shell,MIT 协议,提交活跃。如果你日常在终端跟 Git 打交道,花几分钟装上 forgit,命令行操作会顺畅很多。

浙公网安备 33010602011771号