跳到主要内容Git 终端可视化工具 Lazygit 安装与操作指南 | 极客日志Shell / Bash
Git 终端可视化工具 Lazygit 安装与操作指南
Lazygit 是一款轻量级的 Git 终端可视化工具,支持 Linux、macOS、Windows 等系统。它提供类似 Sourcetree 的可视化体验,通过键盘快捷键实现文件暂存、分支管理、提交历史编辑、合并冲突解决等操作。 Lazygit 在各大主流操作系统上的安装方法,包括 Homebrew、APT、AUR、Scoop 等。同时涵盖了界面面板组成、常用快捷键绑定以及日常开发与高级操作(如交互式变基、樱桃拣选)的实战步骤,旨在帮助用户提升 Git 操作效率,降低学习成本。
佛系玩家4 浏览 安装并使用 Lazygit – 用于 Git 命令的简单终端用户界面
在本教程中,我们将介绍如何在 Linux、macOS、Windows 等系统上安装和使用 Lazygit。Lazygit 是一个用于 Git 命令的轻量终端用户界面,由 Go 语言结合 gocui 库开发实现,可在 Linux、macOS、FreeBSD 和 Windows 系统上运行。该工具能让以终端为的操作环境拥有类 Sourcetree 的可视化体验,操作快速且易用,仅需在 Git 仓库目录中执行单条命令即可启动,无需重复输入原生 Git 指令,可显著提升 Git 操作效率。
Lazygit 的功能特点
- 快速完成文件的暂存与取消暂存操作,支持按代码片段精准暂存
- 直观解决 Git 合并冲突,支持选择保留单/双方案的冲突片段
便捷查看仓库的本地与远程分支,快速完成分支的切换与管理滚动浏览分支、提交记录、暂存内容对应的日志与文件详情一键执行代码的拉取、推送操作,简化远程仓库交互流程支持提交记录的压缩、重命名、修正,轻松管理提交历史提供提交记录的全局搜索功能,可快速定位目标提交支持樱桃拣选操作,可将指定提交复制到其他分支一键打开分支的 Pull Request 页面,简化协作提交流程Lazygit 的面板组成
Lazygit 的终端界面包含多个功能面板,各面板各司其职,覆盖 Git 操作的全流程,面板间可通过快捷键快速切换,各面板功能如下:
- 全局面板:展示仓库整体状态,支持全局操作与导航
- 文件面板:展示仓库中已修改、未跟踪、已暂存的文件列表
- 分支面板:展示仓库的本地与远程分支,支持分支的各类管理操作
- 提交面板:展示当前分支的提交记录,支持提交历史的编辑与操作
- 暂存面板:展示仓库的暂存记录,支持暂存内容的应用、删除与查看
- 合并冲突解决面板:专门用于处理合并冲突,支持冲突片段的选择与编辑
Lazygit 安装
Lazygit 支持多系统安装,不同系统可通过包管理器、PPA 源、AUR 源或二进制包完成安装,以下为各系统的详细安装步骤,安装完成后可通过版本验证命令确认安装成功。
macOS
macOS 系统可通过 Homebrew 包管理器快速安装,执行以下命令即可完成安装:
brew tap jesseduffield/lazygit
brew install lazygit
Ubuntu
Ubuntu 系统的 Lazygit 软件包可通过 Launchpad PPA 获取,先将 PPA 源添加至系统,再执行安装命令:
sudo add-apt-repository ppa:lazygit-team/daily
sudo apt update
sudo apt install lazygit
也可通过二进制包进行安装,适用于 Ubuntu 及 Debian 系列系统,执行以下命令:
LAZYGIT_VERSION=$(curl -s "https://api.github.com/repos/jesseduffield/lazygit/releases/latest"|grep -Po '"tag_name": *"v\K[^"]*')
curl -Lo lazygit.tar.gz "https://github.com/jesseduffield/lazygit/releases/download/v${LAZYGIT_VERSION}/lazygit_${LAZYGIT_VERSION}_Linux_x86_64.tar.gz"
tar xf lazygit.tar.gz lazygit
sudo install lazygit -D -t /usr/local/bin/
Arch Linux
Arch Linux 系统可通过 AUR 源安装 Lazygit,提供稳定版与开发版两个包:lazygit 为基于最新版本构建的稳定版,lazygit-git 为基于最新提交构建的开发版。
安装前需先安装 AUR 助手(如 yay),再执行对应安装命令:
yay -S --noconfirm --needed lazygit-git
yay -S --noconfirm --needed lazygit
Windows
Windows 系统可通过 Scoop 包管理器安装,先添加 extras 仓库,再执行安装命令:
scoop bucket add extras
scoop install lazygit
Fedora 和 RHEL
Fedora 与 RHEL 系统可通过 DNF 包管理器结合 copr 源安装,执行以下命令:
sudo dnf copr enable atim/lazygit -y
sudo dnf install lazygit
NixOS
NixOS 系统支持多种安装方式,可根据需求选择临时使用、全局安装或系统配置中添加,也可通过 flakes 运行:
nix-shell -p lazygit
nix-env -iA lazygit
environment.systemPackages = [ pkgs.lazygit ];
nix run nixpkgs#lazygit
从二进制包安装 Lazygit
二进制包安装为通用安装方式,适用于所有 Linux 系统,可从 Lazygit 发布页获取对应版本的二进制包,以下为 Linux x86_64 架构的安装示例(以 0.40.2 版本为例):
export VER="0.40.2"
wget -O lazygit.tgz https://github.com/jesseduffield/lazygit/releases/download/v${VER}/lazygit_${VER}_Linux_x86_64.tar.gz
tar xvf lazygit.tgz
sudo mv lazygit /usr/local/bin/
Lazygit 安装验证
完成上述任意安装步骤后,在终端执行以下命令验证安装是否成功,若输出版本信息则说明安装完成:
commit=, build date=, build source=nix, version=0.44.1, os=linux, arch=amd64, gitversion=2.47.0
Lazygit 基础使用方法
Lazygit 的使用以 Git 仓库为前提,仅需单条命令即可启动,启动后可通过快捷键完成面板导航、各类 Git 操作,操作均通过键盘快捷键实现,无需鼠标参与。
Lazygit 启动命令
在终端进入任意 Git 仓库的根目录,执行以下命令即可启动 Lazygit 终端界面:
为简化输入,可在系统中设置别名(如 lg),执行 alias lg='lazygit' 后,后续仅需输入 lg 即可启动。
启动后的 Lazygit 界面如下,整体分为左侧功能面板区与右侧预览/指令提示区:
Lazygit 面板详细介绍
Lazygit 的界面分为左侧 5 个功能面板与右侧预览/指令提示区,左侧面板可通过快捷键切换,部分面板支持分页切换(如文件面板支持 Worktrees、Submodules 分页),各面板的详细功能与展示内容如下:
预览面板(Preview):作为右侧面板,可预览未暂存变更、提交内容、文件详情、合并冲突等信息,随左侧操作面板的切换实时更新内容。
暂存面板(Stash):展示仓库的暂存记录,包括暂存时间、暂存描述,支持暂存内容的应用、弹出、删除等操作,用于临时保存未提交的变更。
提交面板(Commits):展示当前分支的所有提交记录,包括提交哈希、提交作者、提交时间、提交信息,支持提交记录的编辑、撤销、压缩等操作。
分支面板(Branches):展示仓库的本地与远程分支列表,支持分支的切换、创建、删除、合并、重命名等管理操作。
文件面板(Files):展示仓库中已修改、已删除、未跟踪、已暂存的文件列表,支持文件的暂存、取消暂存、忽略、删除等操作。
状态面板(Status):展示当前仓库的整体状态,包括当前检出的分支、本地与远程的变更差异,点击面板文本可查看最近打开的仓库列表。
Lazygit 面板导航方式
Lazygit 的面板导航完全通过键盘实现,支持方向键、字母键的快速切换,导航快捷键如下,可实现面板间、面板内的快速移动:
- 按
← → / h l 键:切换左侧不同的功能面板
- 按
↑ ↓ / k j 键:移动当前面板内的光标,选择目标选项
- 按
PgUp/PgDn 或 ctrl+u/ctrl+d 键:滚动预览面板的内容(macOS 系统需按 fn+up/fn+down 实现 PgUp/PgDn)
- 按
[ ] 键:切换当前面板的分页(如文件面板的 Worktrees/Submodules 分页)
- 按数字键
1/2/3/4/5:快速跳转到状态/文件/分支/提交/暂存面板
按 + 键:将当前面板展开为半屏/全屏模式,便于查看详细内容
Lazygit 各面板快捷键绑定
Lazygit 的所有操作均通过快捷键实现,不同面板拥有专属的快捷键,全局快捷键适用于所有面板,操作快捷键可通过 ? 键随时调取帮助菜单(帮助菜单随当前面板动态变化),以下为各面板的详细快捷键绑定。
全局快捷键
适用于 Lazygit 所有面板,包含导航、退出、远程交互等操作:
← →/h l: 切换功能面板
↑ ↓/k j: 移动面板内光标
PgUp/PgDn or ctrl+u/ctrl+d: 滚动预览面板内容(macOS 用 fn+up/fn+down)
q: 退出 Lazygit 界面
p: 从远程仓库拉取代码
shift+P: 向远程仓库推送代码
/: 全局搜索(分支、提交、文件等)
n/N: 切换搜索结果
?: 打开当前面板的快捷键帮助菜单
y/Ctrl+o: 复制选中的内容(文件名、分支名、提交哈希等)
esc: 关闭弹窗/取消当前操作
enter: 确认当前操作/查看选中内容的详情
tab: 切换子面板(如暂存/未暂存变更面板)
文件面板快捷键
专用于文件面板,包含文件暂存、提交、忽略、编辑等操作,是日常使用频率最高的面板之一:
space: 切换文件的暂存状态(暂存/取消暂存)
a: 暂存/取消暂存面板内所有文件
c: 提交已暂存的变更(打开简易提交信息编辑器)
shift+C: 提交已暂存的变更(打开 Git 原生编辑器)
shift+S: 将当前变更暂存至暂存面板
t: 按代码片段暂存文件(精准选择需要暂存的内容)
o: 用系统默认程序打开文件
e: 用系统默认编辑器编辑文件
s: 用 Sublime 打开文件(需系统存在 'subl' 命令)
v: 用 VSCode 打开文件(需系统存在 'code' 命令)
i: 将选中文件添加至 .gitignore 忽略列表
d: 丢弃文件变更(未跟踪文件直接删除,已跟踪文件恢复至最新提交)
D: 丢弃面板内所有文件的未提交变更
shift+R: 刷新文件面板的内容
Enter: 展开/折叠文件夹/查看文件变更详情
分支面板快捷键
专用于分支面板,包含分支的切换、创建、删除、合并等管理操作:
space: 检出选中的分支(切换至目标分支)
f: 强制检出选中的分支(忽略本地未提交变更)
m: 将选中分支合并至当前已检出的分支
M: 打开合并选项,选择合并类型进行分支合并
c: 通过分支名搜索并检出分支
n: 基于当前分支创建新分支(输入新分支名确认)
d: 删除选中的分支(支持选择删除本地/远程分支)
r: 将当前分支变基至选中的分支
R: 重命名选中的分支
p: 从远程拉取选中分支的最新代码
P: 将选中分支的最新代码推送到远程
o: 打开选中分支的 Pull Request 页面(浏览器)
f: 抓取远程仓库的分支更新
Enter: 查看选中分支的提交记录
提交面板快捷键
专用于提交面板,包含提交记录的重命名、压缩、撤销、重置等操作:
s: 将选中提交压缩至上一个提交(仅顶层提交可用)
r: 重命名选中提交的提交信息
shift+R: 用 Git 原生编辑器重命名选中提交的信息
g: 将当前分支重置至选中的提交(支持选择重置类型)
d: 删除选中的提交记录
shift+A: 将当前暂存的变更追加至选中的提交(修正历史提交)
e: 基于选中提交启动交互式变基
F: 为选中提交创建 fixup! 提交,用于后续压缩
S: 将选中提交之上的所有 fixup! 提交压缩至该提交
c: 复制选中的提交(用于樱桃拣选操作)
v: 将复制的提交樱桃拣选至当前分支
/: 搜索提交记录(提交信息、作者、哈希)
Enter: 查看选中提交的文件变更详情
t: 还原选中的提交记录
暂存面板快捷键
专用于暂存面板,包含暂存记录的应用、弹出、删除等操作:
space: 应用选中的暂存记录(保留暂存记录)
g: 弹出选中的暂存记录(应用后删除暂存记录)
d: 删除选中的暂存记录(不应用,直接删除)
Enter: 查看选中暂存记录的文件变更详情
合并冲突解决面板快捷键
专用于处理合并冲突,在合并分支出现冲突时自动触发,支持冲突片段的选择与编辑:
←→/h l: 导航至不同的冲突位置
↑↓/k j: 选中当前冲突位置的不同冲突片段
space: 选择保留选中的冲突片段
b: 保留当前冲突位置的双方冲突片段
z: 撤销当前的冲突选择(未退出冲突面板时有效)
弹出面板通用快捷键
Lazygit 中所有弹出的操作面板(如提交信息编辑、分支名输入)均适用以下快捷键:
esc: 关闭弹出面板/取消当前输入操作
enter: 确认当前输入操作/保存编辑内容
tab: 在编辑时插入换行符
Lazygit 操作实战
Lazygit 覆盖 Git 日常操作的全流程,从文件提交、分支管理到冲突解决、历史提交编辑,均可通过快捷键快速实现,以下为日常开发中高频使用的操作实战步骤,搭配动图直观展示操作过程。
提交文件变更
- 在文件面板中,按
Space 键选中需要提交的文件(或按 a 键选中所有文件),文件变为绿色即表示已暂存;
- 按
c 键打开提交信息编辑器,输入提交信息后按 Enter 键确认;
若需使用 Git 原生编辑器编写提交信息,按 shift+C 键即可。
拉取与推送代码
- 若需拉取/推送指定分支,可在分支面板选中目标分支,按
p/P 键实现。
推送代码:在任意面板按 shift+P 键(大写),即可将当前分支的最新提交推送到远程仓库;
拉取代码:在任意面板按 p 键(小写),即可从远程仓库拉取当前分支的最新代码,自动处理快进合并;
创建与删除分支
删除分支:切换至分支面板,选中需要删除的分支,按 d 键,选择删除「本地分支」或「远程分支」后确认即可;
创建分支:切换至分支面板,按 n 键,输入新分支名后按 Enter 键,即可基于当前分支创建新分支;
注意:创建/删除分支需先切换至分支面板,否则快捷键将无法触发对应操作。
撤销提交记录
- 切换至提交面板,确认需要撤销的提交记录(默认最新提交在面板顶部);
- 按
z 键,弹出撤销提交确认面板,展示待撤销提交的详情;
按 Enter 键确认,即可撤销该提交记录(已暂存的变更会保留,未暂存的变更不会丢失)。
合并分支并解决冲突
分支合并操作
- 切换至分支面板,选中需要合并至当前分支的目标分支;
- 按
M 键,弹出合并选项面板,选择对应的合并类型;
按 Enter 键确认,即可开始分支合并,无冲突则直接合并完成。
- 普通合并(Merge):保留分支的完整提交历史,合并后生成新的合并提交;
- 压缩合并(Squash merge):将目标分支的所有提交压缩为一个提交,合并至当前分支,简化提交历史;
- 压缩合并且不提交(Squash merge and leave uncommitted):与压缩合并一致,但合并后不自动提交,需手动确认提交。
合并冲突解决
- 分支合并出现冲突时,冲突文件会在文件面板中标记,切换至文件面板选中冲突文件;
- 按
Enter 键,在预览面板中查看冲突详情,按 ←→/h l 键导航不同冲突位置;
- 按
↑↓/k j 键选中冲突片段,按 Space 键选择保留该片段,按 b 键可保留双方冲突片段;
所有冲突片段选择完成后,按 c 键提交冲突解决后的变更,完成合并。
丢弃文件变更
- 切换至文件面板,选中需要丢弃变更的文件;
- 按
d 键,弹出确认面板,按 Enter 键确认,即可丢弃该文件的所有未提交变更;
若需丢弃所有文件的未提交变更,按 D 键确认即可。
复制仓库相关信息
- 在任意面板选中需要复制的内容(文件名、分支名、提交哈希、提交信息等);
- 按
y 键或 Ctrl+o 键,即可将选中的内容复制至系统剪贴板;
粘贴至目标位置即可使用(如提交信息、PR 描述、分支名等)。
Lazygit 高级操作实战
除日常基础操作外,Lazygit 还支持交互式变基、樱桃拣选等 Git 高级操作,简化了原生 Git 中复杂的命令行操作,仅通过快捷键即可完成,以下为高级操作的实战步骤。
交互式变基
原生 Git 的交互式变基需编辑 TODO 文件,操作复杂,Lazygit 简化了该流程,支持一键修正历史提交、压缩提交记录,操作如下:
- 修正历史提交:在提交面板选中需要修正的历史提交,将需要追加的变更暂存至文件面板,按
shift+A 键,即可将暂存的变更追加至该提交,完成历史提交修正;
- 自定义交互式变基:在提交面板选中目标提交,按
e 键启动交互式变基,面板中展示该提交之上的所有记录;
- 按
s(压缩)、p(保留)、d(删除)等键修改各提交的变基操作,按 m 键选择「Continue」启动变基;
若变基过程中出现冲突,解决冲突后按 m 键继续变基,直至完成。
樱桃拣选(Cherry-pick)
樱桃拣选可将指定的提交记录从一个分支复制到另一个分支,Lazygit 以「复制 - 粘贴」的方式实现该操作,步骤如下:
- 切换至提交面板,选中需要复制的提交记录,按
c 键复制(复制后的提交背景变为蓝色);
- 切换至分支面板,选中目标分支,按
Space 键切换至该分支;
切回提交面板,按 v 键,即可将复制的提交记录樱桃拣选至当前分支,完成操作。
提交记录搜索
当分支的提交记录较多时,可通过 Lazygit 的搜索功能快速定位目标提交,步骤如下:
- 切换至提交面板,按
+ 键将面板展开为全屏模式,便于查看更多信息;
- 按
/ 键,输入搜索关键词(提交信息、作者名、提交哈希),面板会实时过滤匹配的提交记录;
- 按
n/N 键切换至下一个/上一个匹配结果,找到目标提交后按 Enter 键查看详情;
可对目标提交执行检出、重置、樱桃拣选等操作,按 + 键恢复面板大小。
Lazygit 开发流程
结合开源项目开发的实际场景,使用 Lazygit 可完成从分支创建、开发提交、分支合并到 PR 提交的全流程,步骤如下:
- 同步上游分支:切换至分支面板,选中
upstream-master 分支,按 f 键抓取远程最新更新,保证基础分支为最新状态;
- 创建开发分支:基于
upstream-master 分支,按 n 键创建新的开发分支(如 feature/xxx),按 Enter 键确认;
- 开发并提交:在开发分支中完成功能开发,在文件面板按
Space 键暂存文件,按 c 键提交变更,编写清晰的提交信息;
- 拉取远程更新:开发过程中,若上游分支有更新,按
p 键拉取更新,或变基至上游最新分支;
- 推送开发分支:完成开发后,按
shift+P 键将开发分支推送到远程仓库;
- 提交 PR:切换至分支面板,选中开发分支,按
o 键一键打开 PR 页面,填写 PR 描述后提交即可;
- 分支清理:PR 合并后,切换至分支面板,选中开发分支,按
d 键删除本地与远程的开发分支,完成清理。
Lazygit 使用总结与建议
- Lazygit 是一款轻量、高效的 Git 终端可视化工具,无需脱离终端即可实现 Git 操作的可视化,完美适配终端开发环境,显著减少原生 Git 命令的输入量,提升开发效率;
- Lazygit 的操作基于快捷键实现,初期需花费少量时间熟悉常用快捷键,可通过
? 键随时调取帮助菜单,建议在测试仓库中反复练习,形成肌肉记忆;
- Lazygit 覆盖 Git 基础操作与高级操作的全流程,日常开发中无需再记忆复杂的 Git 命令(如交互式变基、樱桃拣选),降低 Git 操作的学习成本;
- 可通过设置系统别名(如
alias lg='lazygit')简化 Lazygit 的启动命令,进一步提升操作效率;
- Lazygit 为开源工具,可通过 GitHub 官方仓库获取最新版本、提交 Issue 或贡献代码,官方还提供了多语言的快捷键文档,可随时查阅。
微信扫一扫,关注极客日志
微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
相关免费在线工具
- Base64 字符串编码/解码
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
- Base64 文件转换器
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
- Markdown转HTML
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online
- HTML转Markdown
将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online
- JSON 压缩
通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online
- JSON美化和格式化
将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online