如果你每天在终端里敲几十遍 git add、git commit、git push,一定会怀疑:这些命令能不能更顺手一点?lazygit 就是为这个问题而生的终端 Git 可视化工具。它用一个全键盘的 TUI(文本界面)把暂存区、分支、提交、stash 全部摆在你眼前,方向键加几个快捷键就能完成原本要打一长串命令的操作。本文不讲花哨概念,只把 lazygit 的安装、面板、日常高频工作流讲透,让你当天就能用上。
为什么要在终端里用 lazygit
命令行 Git 的痛点不在记不住,而在「上下文切换太碎」:你想看某个文件改了什么,要先 git diff,再看状态要 git status,提交前要 git add -p 一个个挑。每一步都要重新敲命令、重新读输出。lazygit 把这些动作收进同一个屏幕,左侧文件、右侧 diff、底部操作提示,眼睛和手都不用离开。
它并不是要取代 Git,而是 Git 的「驾驶舱」。底层命令还是 Git,只是交互层更友好。对于已经在用 命令行效率工具 的人,lazygit 是那条「少打字、多看结果」的捷径。
lazygit 特别适合三类人:一是每天在多个分支间切来切去、又不想记一堆参数的开发者;二是刚从图形化 Git 客户端转向终端、还想保留可视感的新人;三是只能在服务器终端里改代码的远程开发者。它把「看见状态」的成本降到最低,你永远清楚仓库此刻发生了什么。
| 场景 | 纯命令行 | lazygit |
| 暂存部分改动 | git add -p 逐块确认 | 方向键定位 + 空格折叠/展开 |
| 改写最近提交 | git commit --amend | 选中提交按 A |
| 交互式变基 | git rebase -i 编辑文件 | 可视化排序 + 快捷键 |
| 对比分支 | git log A..B | 并排 commits 面板 |
安装与基础配置
lazygit 是单文件 Go 二进制,主流平台都能一行装好。macOS 用 Homebrew,Linux 用包管理器或下载 Release,Windows 用 scoop/winget 均可。
# macOS
brew install lazygit
# 验证
lazygit --version
# 在仓库目录直接启动
cd your-repo && lazygit
启动时它会自动读取当前目录的 Git 仓库。常用快捷键:x 退出、? 查看帮助、Tab 在面板间切换。建议把 lazygit 配进你的终端复用器(比如 tmux 会话保活),远程开发时体验最佳。
核心面板与导航
lazygit 主界面从上到下大致是四个面板,记住它们你就掌握了 80% 的操作。
| 面板 | 内容 | 常用键 |
| Files | 工作区改动文件 | 空格暂存 / d 丢弃 |
| Branches | 本地与远端分支 | 回车切换 / c 新建 |
| Commits | 当前分支提交历史 | 回车看 diff / r 变基 |
| Stash | 暂存草稿 | s 暂存 / g 取出 |
底部状态栏会实时显示当前可用快捷键,新手不用背,看着按就行。熟练之后你几乎可以 eyes-off 地操作。
一个有用的心智模型是:lazygit 把 Git 的三种状态——工作区、暂存区、历史——摊成三层视图,你在哪一层就操作哪一层。想改工作区就停在 Files,想整理提交就进 Commits,想临时收起改动就开 Stash。这种「分层即视图」的设计,让新手不容易再搞混 reset 与 checkout 的破坏范围。
日常高频工作流
暂存与提交
这是使用频率最高的动作。在 Files 面板里,用上下键选中文件,按空格把它加入暂存区;选中某文件的某一段 diff,再按空格可以只暂存这一块(相当于 git add -p)。确认无误后按 c 打开提交框输入信息,回车即提交。
# 等价命令行流程(lazygit 中全程键盘完成)
git add -p # 交互式挑选改动
git commit -m "fix: 修正登录态校验" # 提交
git push -u origin feature/login # 首次推送分支
交互式变基与改写历史
想整理一连串「fix」「wip」提交?在 Commits 面板选中较早的一个提交,按 r 对它之后的提交做交互式变基。lazygit 会用可视化列表让你选择 squash(合并)、reword(改消息)、drop(删除),比手改 git rebase -i 的 TODO 文件直观太多。关于 rebase 的坑,可以参考 Git rebase 与 cherry-pick 实战踩坑。
# lazygit 里选中提交后按 r,等价于:
git rebase -i HEAD~4
# 然后选择 squash/reword,lazygit 自动打开编辑器帮你改
解决冲突
合并或变基遇到冲突时,lazygit 会把冲突文件标红,回车进入后分三栏显示「当前 / 目标 / 合并结果」,用快捷键一键采纳某一侧或全部。处理完在 Files 面板按 m 标记为已解决,再继续 rebase。对于团队的分支协作规范,Git 分支模型 一文有更系统的约定。
与现有工作流融合
lazygit 不改动你的 Git 习惯,只优化交互。几个融合点最值得提:
- 提交前用 pre-commit 钩子 自动拦截低级错误,lazygit 的提交面板会直接显示钩子失败,便于就地修。
- 推送后的 CI 状态可在终端侧通过 GitHub Actions 面板或通知查看,不必切浏览器。
- 给开源项目贡献时,先在本地用 lazygit 整理提交,再走 开源贡献流程 提 PR,历史更干净。
- 配合 VS Code 做编辑、终端做提交,分工明确。
实用配置与小技巧
lazygit 的配置是 YAML,放在 ~/.config/lazygit/config.yml。几个立竿见影的优化:自定义快捷键、开启 Unicode 主题、给提交加默认签名。
# ~/.config/lazygit/config.yml
gui:
theme:
activeBorderColor:
- green
- bold
showFileTree: true
git:
commitSignOff: true # 自动追加 Signed-off-by
keybinding:
universal:
quit: "q" # 自定义退出键
另一个高频技巧:在 Commits 面板按 t 可以「把某个提交之后的改动全压成一次新提交」,非常适合「先把功能写完,最后再整理成有意义的提交」的写法。
常见坑与排障
| 现象 | 原因 | 处理 |
| 启动报 not a git repository | 当前目录无仓库 | 先 cd 到项目根 |
| diff 中文乱码 | 终端编码非 UTF-8 | 设 LC_ALL=zh_CN.UTF-8 |
| rebase 卡住 | 存在未解决冲突 | 进冲突文件按 m 标记解决 |
| 面板不刷新 | 大仓库文件监听失效 | 按 R 手动刷新 |
需要特别注意的是:lazygit 只是交互层,底层仍是 Git。任何改写历史的操作(squash、rebase、drop)都已经 push 到远端的提交,要谨慎——强行推送会影响协作者,这正是 分支模型 强调「只改写未共享历史」的原因。
小结
lazygit 的价值不在「新功能」,而在把你已经会做的 Git 操作变得更顺、更可视、更少打错。它零学习成本(底部有快捷键提示)、零侵入(不改你的仓库结构)、跨平台一致。如果你每天和 Git 打交道超过半小时,花十分钟装上 lazygit,大概率能省下之后无数次重复敲命令的时间。把它和 pre-commit、分支模型、CI 组合起来,就是一套干净又高效的终端 Git 工作流。




