jesseduffield/lazygit

开发工具

把 Git 的暂存、变基和历史修改变成终端里可键盘操作流程的工具。

83,502
3,189
Go
MIT
创建于 8 年前

lazygit 是 Git 的终端界面,面向习惯在终端工作、又觉得多步 Git 操作繁琐的开发者。它不替代 Git:在已有仓库中运行 lazygit,README 说明它会打印实际执行的命令,因此能看到 Git 到底跑了什么 README。项目本身是 Go 程序,采用 MIT 许可证。2023-07-19 的一位 HN 评论者特别提到这种可见性和控制感 评论。

工作方式上的变化

核心区别是把"编辑 TODO 文件"或"手改 patch 文件"的步骤换成在列表中选取。要暂存部分改动,先聚焦某文件的 diff,用空格暂存整个 hunk;需要更细粒度时切换到逐行选择并标记范围,已暂存内容会出现在下方面板,在下方按空格则取消暂存 README。交互式变基也在界面内完成:启动后可对列出的 TODO commit 执行 squash、fixup、drop、edit 或上下移动,也可以不显式启动变基、直接对某个 commit 做一次性操作 README。

有两个相关机制让历史修改更可控。"Amend an old commit" 会先暂存改动,再在后台运行交互式变基 README;"rebase magic" 允许从旧 commit 构建自定义 patch,把它移入新 commit,或从某个 commit 中删除单个 hunk README。标记 base commit 后,可以只把 feature 分支上的 commit rebase 到另一个分支 README。

其他可做的工作

同一套视图还覆盖 cherry-pick、bisect、过滤、worktree、commit 图、比较两个 commit,以及用自定义快捷键补上缺失功能 README。Undo/redo 存在明确边界:它依赖 reflog,只能撤销 commit 和分支相关操作,不能撤销工作区或 stash 的改动 README。在使用 "nuke" 重置前尤其要注意,它会丢弃 git status 中显示的一切,包括有未提交改动的 submodule README。

要求与可选集成

需要 Git 和终端;二进制版本覆盖 macOS 10.12+、Windows 和 Linux,也有面向多种发行版、Homebrew、Conda、Go 等的安装方式 README。从源码构建需要 Go README。GitHub PR 显示是可选项,不属于基本使用:对 github.com 无需配置,但前提是安装 gh CLI 并完成一次认证;GitHub Enterprise 还需要按主机名登录并添加 services 条目 README。Gitflow 支持同样以已安装 Gitflow 为前提 README。

范围

lazygit 是 Git 仓库的前端,不是独立的托管或代码评审服务。文档描述的是本地仓库操作、配置和自定义命令,README 未给出服务端组件。项目有较广的打包覆盖 repository,但 star 数和榜单记录不能证明它对你的具体仓库足够可靠。实际判断标准是:它打印命令的方式和 undo 的边界,是否与你愿意交给工具的历史改写程度相符。

本文由 AI 根据项目 README 生成,更新于 2026年10月29日,以项目官方文档为准。

Hacker News 讨论

Show HN: I made a tool that made me faster at Git
▲ 551 · 229 条评论 · 2018年8月5日
Lazygit: A simple terminal UI for Git commands
▲ 395 · 141 条评论 · 2021年11月30日
Lazygit: Simple terminal UI for Git commands
▲ 239 · 79 条评论 · 2023年7月19日