英文原文正文为项目原始 README(英文),本站后续会翻译为中文,当前仅剔除图片与无关章节并统一排版。
适用于 macOS 和 Linux
电梯推介
吐槽时间:你以前可能听说过,git 很强大,但当做什么事情都如此他妈的难时,这种力量又有什么用?交互式变基需要你在编辑器里编辑一个该死的 TODO 文件?你在开玩笑吗? 想暂存文件的一部分,你需要用命令行程序逐块处理每个 hunk,如果某个 hunk 不能再分割但包含你不想暂存的代码,你必须_手动_编辑一个晦涩的补丁文件?你在开玩笑吧?! 有时候切换分支时系统要求你先暂存改动,但切换并恢复后发现根本没有冲突,直接切换分支也完全没问题?你一定是在开玩笑!
如果你像我一样只是个凡人,每天都厌倦了听别人说 git 有多强大,而在日常生活中它只是强大的麻烦,那么 lazygit 可能适合你。
功能
暂存块或单独的行
在已更改的文件上按 0 可以在主视图中聚焦其差异。选择最开始会覆盖整个块,所以按 <space> 暂存该块并移动到下一个块。当你只想暂存块的一部分时,按 a 进行逐行选择,按 v 选择一系列行。你暂存的内容会显示在下方窗格中。按 <tab> 在两个窗格之间切换;在下方窗格中按 <space> 取消暂存。按 c 提交而不离开差异视图。
交互式变基
按 i 开始交互式 rebase。然后在继续 rebase 之前,可以对任意 TODO 提交进行 squash (s)、fixup (f)、drop (d)、edit (e)、向上移动 (ctrl+k) 或向下移动 (ctrl+j),然后通过按 m 调出 rebase 选项菜单并选择 continue。
你也可以作为一次性操作执行这些动作(例如,在某个提交上按 s 来闪合它),而无需显式地开始变基。
此演示还使用 Shift + 下箭头选择一系列提交来移动和修正。
挑选
在一次提交上按 shift+c 以复制它,按 shift+v 以粘贴(拔樱桃)它。
二分法
在提交视图中按 b 键,将提交标记为好/坏,以开始 git 二分查找。
彻底清理工作树
当你真的只想清除在运行 git status 时出现的任何内容(是的,这包括脏的子模块)kidpix 风格,按下 shift+d 调出重置选项菜单,然后选择“核爆”选项。
修改一个旧的提交
在任何提交上按 shift+a 会将当前暂存的更改修改到该提交中(在后台运行交互式变基)。
筛选
你可以用 / 来筛选视图。这里我们筛选我们的分支视图,然后按 enter 查看其提交。
调用自定义命令
Lazygit 有一个非常灵活的 自定义命令系统。在这个示例中,定义了一个自定义命令,用于模拟内置的分支检出操作。
工作树
您可以创建工作树,以便同时处理多个分支,而无需在分支之间切换时进行暂存或创建 WIP 提交。在分支视图中按 w,即可从所选分支创建工作树并切换到该工作树。
变基魔法(自定义补丁)
你可以从旧提交构建自定义补丁,然后从提交中移除补丁,拆分出一个新提交,将补丁反向应用到索引中,等等。
在这个示例中,一个旧的提交包含了一个应该独立成提交的更改。我们在该提交上按下 0 以聚焦其差异。在我们想要移动的代码块上按下 <space> 会将其添加到自定义补丁中,而 ctrl+p 会打开自定义补丁选项,在这里我们选择将补丁移到一个新的提交中。
在 Rebase magic Youtube 教程 中了解更多。
如果你只想从一个旧提交中移除一个代码块,你不需要为此创建自定义补丁。在提交的 diff 中选择该代码块,然后按 d。Lazygit 会在后台运行交互式 rebase,把提交重写而不包含这个代码块。
从标记的基础提交重新变基
假设你在一个功能分支上,而该分支本身是从 develop 分支分出来的,现在你决定你更希望从 master 分支分支。你需要一种方法只对你的功能分支的提交进行变基。在这个演示中,我们先检查 develop 分支的最后一个提交,然后按 shift+b 将该提交标记为我们的基准提交,然后在 master 分支上按 r 进行变基,只将功能分支的提交带过去。然后我们使用 shift+p 推送我们的更改。
撤销
你可以通过按 z 撤销上一个操作,通过按 shift+z 重做操作。这里我们放弃几个提交,然后撤销这些操作。撤销使用的是 reflog,它是针对提交和分支的,所以我们无法撤销工作区或暂存区的更改。
提交图
在放大的窗口中查看提交图时(使用 + 和 _ 切换屏幕模式),将显示提交图。颜色对应提交作者,当你向下浏览图表时,所选提交的父提交会被高亮显示。
比较两个提交
如果你在一个提交(或分支/引用)上按下 shift+w,将会打开一个菜单,允许你标记该提交,以便任何其他你选择的提交都将与它进行比较。一旦你选择了第二个提交,你将在主视图中看到差异,如果你按下 <enter>,你将看到差异的文件。你可以按 shift+w 再次查看差异菜单,以查看如反转差异方向或退出差异模式的选项。你也可以按 <escape> 退出差异模式。
显示 GitHub 拉取请求
在分支面板中,lazygit 可以通过在分支名称旁显示 GitHub 图标来显示哪些分支有相关的 GitHub 拉取请求;图标的颜色显示 PR 的状态(打开、已合并等)。对于有拉取请求的分支,你可以按 shift-G 在浏览器中打开 PR。无需额外配置即可在 github.com 上启用此功能,但需要安装 gh 工具,并且需要执行一次 gh auth login 以允许 lazygit 访问 GitHub。对于 GitHub Enterprise,还需运行 gh auth login --hostname <webDomain> 并为该主机添加使用 github 提供程序的 services 条目。
教程
安装
上述大多数软件包由第三方维护,因此请确保自己进行审核,并确认维护者是值得信赖的人,例如会参加本地体育赛事并通过烧烤募捐等方式回馈社区
二进制发布
对于 Windows、Mac OS(10.12) 或 Linux,你可以在此处下载二进制发布版本。
开发容器功能
如果你想在例如 GitHub Codespaces 中使用 lazygit,有一个基于上述二进制发布的第三方开发容器功能。
自制
它在 Linux 上也可用。
brew install lazygit
MacPorts
从 GitHub 发布构建的最新版本。Tap:
sudo port install lazygit
Void Linux
Void Linux 的软件包可在发行版仓库中获得
它们遵循上游的最新版本
sudo xbps-install -S lazygit
Scoop(Windows)
你可以使用 scoop 安装 lazygit。它在 extras 仓库中:
# Add the extras bucket
scoop bucket add extras
# Install lazygit
scoop install lazygit
gah(Linux 和 Mac OS)
你可以使用 gah 安装 lazygit:
gah install lazygit
Arch Linux
Arch Linux 的软件包可以通过 pacman 和 AUR(Arch 用户仓库)获得。
有两个软件包。一个是使用最新发布版本构建的稳定版,另一个是从最近的提交构建的 git 版本。
- 稳定版:
sudo pacman -S lazygit - 开发版:https://aur.archlinux.org/packages/lazygit-git/
关于如何安装 AUR 内容的说明可以在这里找到:https://wiki.archlinux.org/index.php/Arch_User_Repository
Fedora / 亚马逊 Linux 2023 / CentOS Stream
Fedora、Amazon Linux 2023 和 CentOS Stream 的软件包可以通过 Copr(酷炫的其他软件包仓库)获得。
sudo dnf copr enable dejan/lazygit
sudo dnf install lazygit
这些软件包是使用位于此处的 RPM 规范文件构建的:https://codeberg.org/dejan/rpm-lazygit
您应该能够使用 SRPM(源 RPM)文件为 Fedora 41 或更早版本,以及其他 Fedora 衍生版构建 RPM,该文件可以从最新的 COPR 构建中获取。
Fedora / RHEL 衍生版(Terra)
Fedora 和 RHEL 衍生版的软件包也可以从 Terra 仓库 获得。
sudo dnf install --nogpgcheck --repofrompath 'terra,https://repos.fyralabs.com/terra$releasever' terra-release
sudo dnf install lazygit
(Atomic/EL 的安装指南可以在他们的 README 中找到)
Terra 还有 lazygit-doc,其中包含 docs 文件夹的内容。
Solus Linux
sudo eopkg install lazygit
Debian 和 Ubuntu
适用于 Debian 13 “Trixie”, Sid 及更高版本,或 Ubuntu 25.10 “Questing Quokka” 及更高版本:
sudo apt install lazygit
对于 Debian 12 “Bookworm”,Ubuntu 25.04 “Plucky Puffin” 及更早版本:
LAZYGIT_VERSION=$(curl -s "https://api.github.com/repos/jesseduffield/lazygit/releases/latest" | \grep -Po '"tag_name": *"v\K[^"]*')
LAZYGIT_ARCH=$(uname -m | sed -e 's/aarch64/arm64/')
curl -Lo lazygit.tar.gz "https://github.com/jesseduffield/lazygit/releases/download/v${LAZYGIT_VERSION}/lazygit_${LAZYGIT_VERSION}_Linux_${LAZYGIT_ARCH}.tar.gz"
tar xf lazygit.tar.gz lazygit
sudo install lazygit -D -t /usr/local/bin/
验证 lazygit 的正确安装:
lazygit --version
Funtoo Linux
Funtoo Linux 在 dev-kit 中有一个自动生成的 lazygit 软件包:
sudo emerge dev-vcs/lazygit
Gentoo Linux
Lazygit 目前还不在 Gentoo 主 Portage 中,但在 GURU overlay 中可用 ebuild
你可以将该 overlay 添加到系统中,然后像平常一样安装 lazygit:
sudo eselect repository enable guru
sudo emaint sync -r guru
sudo emerge dev-vcs/lazygit
openSUSE
lazygit 软件包当前在 devel:languages:go/lazygit 上构建。
要在 openSUSE Tumbleweed 上安装 lazygit,请运行:
sudo zypper ar https://download.opensuse.org/repositories/devel:/languages:/go/openSUSE_Factory/devel:languages:go.repo
sudo zypper ref && sudo zypper in lazygit
在 openSUSE Leap 上安装 lazygit,请运行:
source /etc/os-release
sudo zypper ar https://download.opensuse.org/repositories/devel:/languages:/go/$VERSION_ID/devel:languages:go.repo
sudo zypper ref && sudo zypper in lazygit
NixOS
使用 nixpkgs 中的 lazygit
在 NixOS 上,lazygit 与 nix 一起打包,并通过 nixpkgs 分发。您可以在不安装的情况下尝试 lazygit,方法如下:
nix-shell -p lazygit
# or with flakes enabled
nix run nixpkgs#lazygit
或者你可以通过 environment.systemPackages 选项将 lazygit 添加到你的 configuration.nix 中。更多详情可以通过 NixOS 搜索 页面 查看。
使用官方的 lazygit flake
该仓库包含一个 nix flake,提供最新的开发版本和额外的开发工具:
直接从仓库运行 lazygit:
nix run github:jesseduffield/lazygit
# or from a local clone
nix run .
从源代码构建lazygit:
nix build github:jesseduffield/lazygit
# or from a local clone
nix build .
开发环境: 对于贡献者,该 flake 提供了一个包含 Go 工具链、开发工具和依赖项的开发 shell:
nix develop github:jesseduffield/lazygit
# or from a local clone
nix develop
开发环境包含:
- Go 工具链
- git 和 make
- 用于开发的适当环境变量
在其他 flakes 中使用: 该 flake 还提供了一个 Overlay,便于集成到其他基于 flake 的项目中:
{
inputs.lazygit.url = "github:jesseduffield/lazygit";
outputs = { self, nixpkgs, lazygit }: {
# Use the overlay
nixpkgs.overlays = [ lazygit.overlays.default ];
};
}
弗洛克斯
Lazygit 可以按如下方式安装到 Flox 环境中。
flox install lazygit
关于 Flox 的更多信息可以在 他们的网站 上找到。
FreeBSD
pkg install lazygit
Termux
apt install lazygit
眼镜蛇
已发布的版本适用于不同的平台,请参见 https://anaconda.org/conda-forge/lazygit
conda install -c conda-forge lazygit
去
go install github.com/jesseduffield/lazygit@latest
请注意:如果您收到错误提示,声称找不到 lazygit 或未定义,您可能需要将 ~/go/bin 添加到您的 $PATH(macOS/Linux),或 %HOME%\go\bin(Windows)。不要与 C:\Go\bin 混淆(这是用于 Go 自身的二进制文件,而不是像 lazygit 这样的应用程序)。
Chocolatey(Windows)
您可以使用 Chocolatey 安装 lazygit:
choco install lazygit
Winget(Windows 10 1709 或更高版本)
您可以在 Windows 终端中使用 winget 命令安装 lazygit,命令如下:
winget install -e --id=JesseDuffield.lazygit
手册
您需要安装 Go
git clone https://github.com/jesseduffield/lazygit.git
cd lazygit
go install
你也可以使用 go run main.go 一步编译并运行(这个双关绝对是故意的)
使用
在 git 仓库内的终端中调用 lazygit。
$ lazygit
如果你愿意,你也可以为此添加一个别名,方法是 echo "alias lg='lazygit'" >> ~/.zshrc(或者你正在使用的其他 rc 文件)。
快捷键绑定
你可以在这里查看快捷键绑定列表。
退出时更改目录
如果你在 lazygit 中更改了仓库,并且希望退出 lazygit 时你的 shell 切换到该仓库目录,请将以下内容添加到你的 ~/.zshrc(或其他 rc 文件)中:
lg()
{
export LAZYGIT_NEW_DIR_FILE=~/.lazygit/newdir
lazygit "$@"
if [ -f $LAZYGIT_NEW_DIR_FILE ]; then
cd "$(cat $LAZYGIT_NEW_DIR_FILE)"
rm -f $LAZYGIT_NEW_DIR_FILE > /dev/null
fi
}
然后 source ~/.zshrc,从现在起,当你调用 lg 并退出时,你将切换到 lazygit 内部所在的目录。要覆盖此行为,你可以使用 shift+Q 退出,而不是仅使用 q。
撤销/重做
请参阅 文档
配置
查看配置文档。
自定义差异渲染器
查看文档
自定义命令
如果 lazygit 缺少某个功能,很有可能你可以通过自定义命令自己实现它!
查看文档
Git 流程支持
如果你已安装,Lazygit 支持 Gitflow(或 git-flow-next)。要了解 Gitflow 模型的工作原理,请查看 Vincent Driessen 的原始文章。要在 Lazygit 中查看 Gitflow 选项,在分支视图中按 i。
贡献
我们非常重视您的意见!请查看贡献指南。对于在此仓库中不适合讨论的贡献者话题,请加入Discord频道
如果你想了解从哪里开始,可以查看这个视频,演示了如何在lazygit中创建一个小功能。
本地调试
在一个终端标签中运行 lazygit --debug,在另一个标签中运行 lazygit --logs,以并排查看程序及其日志输出
捐赠
如果你想支持 lazygit 的开发,请考虑赞助我(GitHub 在 12 个月内将对所有捐款进行一对一匹配)
常见问题
提交颜色代表什么?
- 绿色:提交已包含在主分支中
- 黄色:提交未包含在主分支中
- 红色:提交尚未推送到上游分支
无耻宣传
如果你想了解我(Jesse)在开发方面的最新动态,请在推特上关注我,或者查看我的博客
替代方案
如果你发现 lazygit 并不能完全满足你的需求,这些可能更适合你:
- 本文标题:lazygit - 用于 Git 命令的简单终端界面
- 本文链接:https://cn121.com/cli/jesseduffield-lazygit.html
- 原项目:jesseduffield/lazygit 版权归原作者 jesseduffield 及贡献者所有
- 收录信息:本站于 2026-10-10 收录本项目,本页所列协议与仓库指标均为收录当时的状态;该日期之后原项目的版本更新与协议变更,本页不作同步。
- 开源协议:收录时本项目采用 MIT(查看 LICENSE 原文),本站转载其原始文档(未改动文字,仅剔除图片与无关章节);使用、修改、分发请以该仓库 LICENSE 原文为准。
- 站点出处:本文首发于 OneTwoOne,收录自 GitHub 开源项目 jesseduffield/lazygit。
- 内容说明:本页正文为原项目 README 原文(英文),本站后续会翻译为中文(当前尚未译出,仅将二级标题译为中文,便于按栏目定位;标题原文可在下方原仓库中查看),仅剔除了图片与赞助等无关章节、并把相对链接改为绝对地址;页首简介为机器翻译自仓库描述。
- 引用声明:商业转载、第三方聚合或 AI 检索训练引用时,请务必保留以上来源出处、本文永久链接,以及原项目的版权声明与许可信息。
- 下架通道:若原项目此后变更或收紧了许可协议、或作者/权利人认为本站的收录方式(译文、排版适配、简介翻译等)超出其授权范围,请通过 xyd3302001@163.com 发送下架通知,并附上项目地址与本页链接。本站核实后将第一时间删除本页内容,或改为不复制原文的目录性收录;署名更正等其他要求可一并提出。