关于 Lazygit
Lazygit 提供一个快速、直观的终端 UI,通过键盘快捷键处理分支、提交、变基等 Git 操作。开发者可以在不离开终端的情况下,以更高效的方式浏览和修改 Git 历史。
主要功能
- 01轻松创建、切换和删除分支
- 02交互式暂存和提交文件更改
- 03直观的变基、合并和冲突解决界面
- 04快速浏览提交历史和文件变更
适用场景
- 01在复杂的分支管理和变基工作中提高效率
- 02进行交互式提交和部分暂存,精细控制版本历史
- 03快速解决合并冲突和审查代码变更
安装
选择你的系统或包管理器,复制命令到终端运行。
安装完成后运行lazygit --version确认安装成功。
命令示例
常用命令按使用顺序排列。
详细介绍
适用于 macOS 和 Linux
赞助者
本项目的维护离不开所有贡献者和赞助者的支持。如果你愿意赞助本项目,并让你的头像或公司徽标显示在下方,请点击此处。💙
简介
吐槽时间:你肯定听过,git 功能强大,但当一切操作都该死地难用时,这种强大又有什么意义?交互式变基居然需要你在编辑器里编辑一个该死的 TODO 文件?开什么玩笑? 要暂存文件的一部分,你得用命令行程序逐个处理每个代码块;如果某个代码块已经无法再拆分,却包含你不想暂存的代码,你就得_手动_编辑一份晦涩难懂的补丁文件?你开什么玩笑?! 有时你切换分支时会被要求先贮藏更改,结果切换并恢复贮藏后才发现根本没有任何冲突,直接检出分支就行了?你这一定是在开玩笑吧!
如果你和我一样只是个普通人,已经厌倦了别人总说 git 有多强大,而它在日常使用中却让你头疼不已,那么 lazygit 也许适合你。
目录
- 赞助商
- 简介
- 目录
- 功能
- 教程
- 安装
- 使用方法
- 配置
- 贡献
- 捐赠
- 常见问题
- 自我推广
- 替代方案
Lazygit 不是我的全职工作,但它占用了我相当多的业余时间。如果你想支持这个项目,请考虑赞助我
功能
暂存代码块或单独的行
在已更改的文件上按 0,即可在主视图中聚焦该文件的差异。起初选中的是整个代码块,因此按 <space> 会暂存该代码块并跳到下一个代码块。如果只想选择代码块的一部分,按 a 可逐行选择,按 v 可选择一段行。你暂存的内容会显示在下方窗格中。按 <tab> 可在两个窗格之间切换;在下方窗格中按 <space> 可取消暂存。按 c 可直接提交,无需退出差异视图。
交互式变基
按 i 开始交互式变基。然后,对任意待处理提交进行压缩(s)、合并(f)、丢弃(d)、编辑(e)、上移(ctrl+k)或下移(ctrl+j),再按 m 打开变基选项菜单,并选择 continue 以继续变基。
你也可以不显式开始变基,直接对提交执行上述任一操作一次(例如,按提交上的 s 将其压缩)。
此演示还使用 shift+down 选择一组提交,以便移动并合并。
Cherry-pick
在提交上按 shift+c 复制该提交,然后按 shift+v 粘贴(cherry-pick)。
二分查找
在提交视图中按 b,将提交标记为正常或异常,以开始 git bisect。
清空工作树
如果你真的想彻底清除运行 git status 时显示的所有内容(没错,也包括有未提交更改的子模块),按 kidpix 风格 按 shift+d 打开重置选项菜单,然后选择“彻底清空”选项。
修改旧提交
在任意提交上按 shift+a,即可用当前暂存的更改修改该提交(后台会运行交互式变基)。
筛选
按 / 可以筛选视图。这里我们筛选分支视图,然后按 enter 查看该分支的提交。
调用自定义命令
Lazygit 提供了非常灵活的自定义命令系统。在此示例中,我们定义了一个自定义命令,用于模拟内置的分支检出操作。
工作树
你可以创建多个工作树,同时处理多个分支,无需在切换分支时暂存更改或创建 WIP 提交。在分支视图中按 w,即可根据选中的分支创建工作树并切换到该工作树。
变基魔法(自定义补丁)
你可以根据旧提交构建自定义补丁,然后从该提交中移除补丁、拆分出一个新提交、将补丁反向应用到索引等。
在此示例中,旧提交包含一项本应单独提交的更改。我们在该提交上按 0 聚焦其差异。在要移动的代码块上按 <space>,将其添加到自定义补丁;按 ctrl+p 打开自定义补丁选项,然后选择将补丁移入新提交。
请参阅 变基魔法 YouTube 教程了解更多信息。
如果你只想从旧提交中移除一个代码块,则无需使用自定义补丁。在提交的差异中选中该代码块,然后按 d。Lazygit 会在后台运行交互式变基,重写该提交并移除这个代码块。
从标记的基准提交变基
假设你当前位于一个功能分支上,而这个分支最初是从 develop 分支分出来的;现在你决定改为从 master 分支分支。你需要一种只对功能分支上的提交进行变基的方法。在此演示中,我们先查看 develop 分支上的最后一个提交,然后按 shift+b 将该提交标记为基准提交,再在 master 分支上按 r 以它为目标进行变基,只带上功能分支上的提交。然后按 shift+p 推送更改。
撤销
按 z 可撤销上一个操作,按 shift+z 可重做。这里我们丢弃了几个提交,然后撤销这些操作。
撤销功能使用 reflog,它仅针对提交和分支,因此无法撤销对工作树或 stash 的更改。
提交图
在放大窗口中查看提交图时(使用 + 和 _ 切换屏幕模式),会显示提交图。颜色对应提交作者;当你沿图向下浏览时,所选提交的父提交会高亮显示。
比较两个提交
在某个提交(或分支/ref)上按 shift+w 会打开一个菜单,你可以在其中标记该提交,以便将之后选中的其他提交与它进行差异比较。选中第二个提交后,你会在主视图中看到差异;按 <enter> 则会看到差异涉及的文件。再次按 shift+w 可打开差异菜单,查看反转差异方向或退出差异模式等选项。你也可以按 <escape> 退出差异模式。
显示 GitHub 拉取请求
在分支面板中,lazygit 可以在分支名称旁显示 GitHub 图标,以标明哪些分支关联了 GitHub 拉取请求;图标颜色表示 PR 的状态(开放、已合并等)。对于有 PR 的分支,你可以按 shift-G 在浏览器中打开 PR。启用此功能无需配置,但需要安装 gh 工具,并且需要运行一次 gh auth login,以允许 lazygit 访问 GitHub。对于 GitHub Enterprise,还需运行 gh auth login --hostname <webDomain>,并为该主机添加一个 services 条目,使用 github 提供程序。
教程
安装
上面的大多数软件包都由第三方维护,因此请务必自行审核,并确认维护者看起来值得信赖,会参加当地体育赛事,还会通过烧烤筹款活动等方式回馈社区。
二进制发行版
对于 Windows、Mac OS(10.12+) 或 Linux,你可以在此下载二进制发行版。
Dev container 功能
如果你想在例如某个 GitHub Codespaces 中使用 lazygit,可以使用基于上述二进制发行版的第三方 dev container 功能。
Homebrew
它也适用于 Linux。
brew install lazygit
MacPorts
基于 GitHub 发行版构建的最新版本。 添加源:
sudo port install lazygit
Void Linux
Void Linux 的软件包可在发行版仓库中获取。
这些软件包跟随上游最新版本。
sudo xbps-install -S lazygit
Scoop(Windows)
你可以使用 scoop 安装 lazygit。它位于 extras bucket 中:
# 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 User Repository)获取。
有两个软件包:稳定版使用最新发行版本构建,git 版本则使用最近的提交构建。
- 稳定版:
sudo pacman -S lazygit - 开发版:https://aur.archlinux.org/packages/lazygit-git/
此处提供了安装 AUR 内容的说明: https://wiki.archlinux.org/index.php/Arch_User_Repository
Fedora / Amazon Linux 2023 / CentOS Stream
Fedora、Amazon Linux 2023 和 CentOS Stream 的软件包可通过 Copr(Cool Other Package Repo)获取。
sudo dnf copr enable dejan/lazygit
sudo dnf install lazygit
这些软件包使用此处提供的 RPM spec 文件构建:https://codeberg.org/dejan/rpm-lazygit
你应该可以使用最新 COPR 构建中的 SRPM(Source RPM)文件,为 Fedora 41 或更早版本以及其他 Fedora 衍生版构建 RPM。
Fedora / RHEL 衍生版(Terra)
Fedora 和 RHEL 衍生版也可从 Terra Repository 获取软件包。
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 提供一个开发 shell,其中包含 Go 工具链、开发工具和依赖项:
nix develop github:jesseduffield/lazygit
# or from a local clone
nix develop
开发 shell 包含:
- Go 工具链
- git 和 make
- 适用于开发的环境变量
在其他 flake 中使用: 该 flake 还提供一个 overlay,便于集成到其他基于 flake 的项目中:
{
inputs.lazygit.url = "github:jesseduffield/lazygit";
outputs = { self, nixpkgs, lazygit }: {
# Use the overlay
nixpkgs.overlays = [ lazygit.overlays.default ];
};
}
Flox
可以按如下方式将 Lazygit 安装到 Flox 环境中。
flox install lazygit
关于 Flox 的更多详情,请访问其网站。
FreeBSD
pkg install lazygit
Termux
apt install lazygit
Conda
不同平台均提供已发布版本,请参阅 https://anaconda.org/conda-forge/lazygit
conda install -c conda-forge lazygit
Go
go install github.com/jesseduffield/lazygit@latest
请注意:
如果你遇到错误,提示找不到 lazygit 或未定义 lazygit,可能需要将 ~/go/bin 添加到 $PATH(macOS/Linux),或将 %HOME%\go\bin 添加到 PATH(Windows)。不要与 C:\Go\bin 混淆,后者存放的是 Go 自身的二进制文件,而不是 lazygit 这类应用。
Chocolatey(Windows)
你可以使用 Chocolatey 安装 lazygit:
choco install lazygit
Winget(Windows 10 1709 或更高版本)
你可以在 Windows Terminal 中使用 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 flow 支持
如果已安装,Lazygit 支持 Gitflow(或 git-flow-next)。若要了解 Gitflow 模型的工作方式,请查看 Vincent Driessen 介绍该模型的原文。要在 Lazygit 中查看 Gitflow 选项,请在分支视图中按 i。
贡献
我们期待你的参与!请查看贡献指南。 若要讨论不适合在仓库中进行的贡献相关话题,请加入 discord 频道
如果你想了解如何入手,可以观看这个视频,了解如何在 lazygit 中开发一个小功能。
本地调试
在一个终端标签页中运行 lazygit --debug,在另一个标签页中运行 lazygit --logs,即可并排查看程序及其日志输出
捐赠
如果你愿意支持 lazygit 的开发,可以考虑赞助我(github 将在 12 个月内按一比一的比例匹配所有捐款)
常见问题
提交颜色代表什么?
- 绿色:该提交包含在 master 分支中
- 黄色:该提交未包含在 master 分支中
- 红色:该提交尚未推送到上游分支
不好意思打个广告
如果你想了解我(Jesse)最近在做哪些开发工作,可以关注我的 twitter,或查看我的博客
替代方案
如果你发现 lazygit 不太符合你的需求,以下工具可能更适合:





































































































