跳到正文

目录

LazyGit:Git 终端可视化的日常操作指南

LazyGit:Git 终端可视化的日常操作指南

LazyGit 解决的问题很具体:Git 命令行能做所有事,但交互式变基(interactive rebase)、逐行暂存、Cherry-pick 这类操作要记一堆参数,敲错了只能重来。LazyGit 把这些操作放进一个终端里的 TUI(Text User Interface,文本用户界面),用面板分开展示,按一个键就执行对应的 git 命令。

它没有重新实现 Git,而是把你常用的 Git 操作封装成不到一两个按键的动作,并实时展示执行结果。本文针对「已经会用 git,想在日常开发里取代命令行」的读者,按面板介绍快捷键,再带你把提交、变基、冲突解决走一遍。

前置条件

  • 已安装 Git(macOS 与 Linux 建议 2.32 及以上;Windows 用户可通过官方安装包获取)
  • 能打开终端,基本会用 cdgit status

一、项目概况

1.1 它到底是什么

LazyGit 是一个开源的 Git 终端 UI,用 Go 编写,基于 gocui 绘制界面。它自己不处理 Git 的底层逻辑,而是通过内部命令层调用系统的 git 可执行文件来完成实际操作——你在界面上做的每一步,对应的都是一条真实的 git 命令。

这样做的好处是行为与命令行完全一致:LazyGit 显示的分支、提交、状态就是 git 的输出,不引入另一套语义。它替你省下的是「记忆命令 + 敲参数」这部分,而不是改变 Git 本身的行为。

1.2 数据口径

以下数据从 GitHub 仓库两次调用中核对,供参考。Stars、Forks 会随时间增长,以仓库页面为准。

指标数值(2026-08 核实)
语言Go
开源协议MIT
Stars约 8.2 万
Forks约 3,000
最新稳定版v0.64(2026-08 发布)

二、安装与启动

按你的平台选择一种即可。装好后在任一 Git 仓库目录里运行 lazygit 就能进入界面;不在仓库目录里运行会提示找不到 Git 仓库。

2.1 macOS

brew install lazygit

2.2 Linux

  • Ubuntu / Debian:无官方 apt 包时,走 GitHub Releases 下载预编译二进制。仓库 Releases 页面提供 lazygit_<版本>_Linux_x86_64.tar.gz,解压后放入 PATH

    sudo install lazygit /usr/local/bin
  • Arch 及其衍生:AUR 里可直接安装:

    yay -S lazygit
  • 其他发行版:同样使用 Releases 页面下载对应架构的压缩包即可,也可用官方 brew.sh 的 Linux 版。

2.3 从源码安装

适合想改代码或跟进最新分支的场景:

go install github.com/jesseduffield/lazygit@latest

装完确认二进制在 PATH 中。Go 版本过低或环境变量未配好时,可先看 go env GOPATH 把对应的 bin 目录加入 PATH

2.4 Windows

通过 Winget 或 Scoop 安装:

winget install JesseDuffield.LazyGit
# 或
scoop install lazygit

三、界面与导航

3.1 五个面板

LazyGit 启动后界面主要分成五个面板,用数字键或 Tab 切换:

数字键面板作用
1状态(Status)仓库信息、当前分支、检查更新
2文件(Files)工作区改动:暂存区与未暂存文件的增删改
3分支(Local Branches)本地分支,Enter 查看某分支的提交
4提交(Commits)提交历史,Enter 查看某次提交改动的文件
5储藏(Stash)储藏(stash)列表

主面板在右侧,展示当前选中条目的 diff(差异)或操作预览。任意时刻按 ? 打开当前面板的快捷键帮助。

3.2 通用快捷键

这些键在任何面板都有效:

动作
?打开 / 关闭当前面板快捷键菜单
q退出
Tab / 数字键切换面板
↑↓jk上下移动选中项
Enter进入选中项(如查看某提交改了什么)
/在当前面板内按文本搜索
:执行一条自定义 shell 命令
z撤销上一次 Git 操作(借助 reflog,试验性)

四、文件面板:暂存与提交

文件面板是你最常用的地方,展示所有未提交的改动。选择文件用 space 切换暂存状态,Enter 进入逐行(line-by-line)暂存视图——这是 LazyGit 比命令行 git add -p 顺手的地方。

动作
space暂存 / 取消暂存当前文件
a暂存 / 取消暂存全部文件
Enter进入逐行暂存视图(按 hunk 或单行暂存)
Enter(目录上)展开 / 收起目录
s储藏全部改动(进入储藏面板)
d放弃当前文件的改动(弹出选项)
D重置 / 放弃全部改动(弹出选项)
c提交暂存的改动
w提交暂存的改动(跳过 pre-commit 钩子)
A用已暂存的改动补充到最近一次提交(amend)
e用系统编辑器打开当前文件
i把当前文件加入 .gitignore
M打开外部合并工具(git mergetool)解决冲突

逐行暂存视图里,space 暂存光标所在的块或行,s(小写)保存并返回。这一模式适合做「只提交某个改动的一小部分」这种事。

五、提交面板:历史与变基

提交面板列出提交历史。它最强大的能力是交互式变基(interactive rebase)——在历史里选定一个起点,然后用一组键对每个提交做 pick / reword / squash / fixup,边看 diff 边改历史。

动作
Enter查看选中提交改动的文件清单
r修改某提交的提交信息(reword)
s把当前提交压缩到上一个(squash)
f把当前提交标记为 fixup(合并但丢弃信息)
d删除当前提交
e从该提交开始进入交互式变基
n基于该提交新建分支
c复制当前提交(Cherry-pick)
v粘贴已复制的提交(Cherry-pick)
A用暂存改动补充最近一次提交(amend)

5.1 交互式变基流程

要压缩最近三个提交为一个:

  1. 进入提交面板(4),选中倒数第三个提交。
  2. e 进入以它为基点的交互式变基界面。该提交及其之后的提交会列出来。
  3. 在列表中选中一个提交后,按以下键改它的动作: p pick(保留)、r reword(改成提交信息)、s squash(合并到上一个)、f fixup(合并但丢信息)、d drop(丢弃)。
  4. 全部设置好后按 enter 拉出确认弹窗,确认后 LazyGit 执行 git rebase 并回到提交面板。

变基途中若想放弃,按 m 打开变基选项菜单,选择 Abort 即可回到起点状态。

5.2 Cherry-pick 流程

  1. 在提交面板选中要复制的提交,按 c
  2. 切到目标分支,回到提交面板按 v,选中仓库粘贴。选中项会被复制为一次新提交。

六、分支面板

分支面板处理本地分支与远程跟踪。space 是切换分支最常用的动作。

动作
space切换(checkout)到选中分支
n新建分支
c按名字输入并切换到某分支
r把当前分支变基到选中分支上
M把选中分支合并进当前分支
d删除选中分支
R重命名分支
u设置 / 取消上游跟踪(upstream)
f从上游快进当前分支
T为选中分支打标签

实际项目多用「分支 + Rebase」而非频繁合并:切到功能分支,在分支面板按 r 变基到 main,解决了冲突再推上去,历史是线性的,干净。

七、储藏面板

储藏(stash)用于把当前改动临时收起来,切换到别的分支再取回。

动作
space应用选中的储藏(不删除它)
g应用并移除选中的储藏(pop)
d删除选中的储藏

在文件面板按 s 会创建一个储藏并跳到储藏面板;之后随时到这里 g 取回。

八、配置

默认配置通常够用,只有想改主题或默认行为时才需要写配置文件。

8.1 配置文件位置

平台全局配置文件
Linux~/.config/lazygit/config.yml
macOS~/Library/Application Support/lazygit/config.yml
Windows%LOCALAPPDATA%\lazygit\config.yml

另外支持仓库级配置:放在仓库内的 .git/lazygit.yml 只对该仓库生效;放在仓库的某个上级目录、命名为 .lazygit.yml,则对该目录下的所有仓库都生效,适合给一组相关项目统一设置。仓库级配置会覆盖全局配置。

8.2 常用配置项

gui:
  # 选中行与活动边框的颜色
  theme:
    activeBorderColor: [green]
    selectedLineBgColor: [blue]

git:
  paging:
    color: always

配置是覆盖式的:只写你想改的键,其余用默认值。官方文档的 Config.md 列出了全部可配置项,改之前先去那里确认某个键的准确名称,避免填了无效字段。

8.3 命令别名

~/.gitconfig 里加两行,之后用 git lg 快速进入:

[alias]
    lg = lazygit

九、常见问题

9.1 启动时报找不到 Git 仓库

在非 Git 目录里运行会报错。进入仓库目录再启动,或用 lazygit --path <仓库路径> 指定。

9.2 后台开着的终端卡住、方向键无反应

LazyGit 启动时会显示一个提示弹窗并要求确认(内容包含赞助与使用提示)。方向键没反应通常是因为焦点在提交信息或搜索输入框里,先按 Esc 退出输入,再操作列表。

9.3 想撤销上一步操作

z,LazyGit 通过 reflog 推断上一条 Git 命令并回退。注意它覆盖的是提交类操作,工作区里未提交的改动不会被撤销,别用它处理文件内容层面的误删。

9.4 合并冲突怎么处理

冲突发生时,冲突文件会出现在文件面板。用 Enter 进入冲突的文件,主面板会展示冲突段落;按 m 打开合并选项,或用外部合并工具(M)解决。每解决完一个文件,用 space 暂存它标记为已解决,最后提交。具体冲突段的选择可用 e 打开编辑器手动改。

9.5 版本和快捷键对不上

LazyGit 迭代较快,个别键位会变。以界面内 ? 实时帮助为准,其次是官方 Keybindings_en.md。本文章程以 v0.64 为准。

十、自测

1. 文件面板里,spacea 各自做什么?进入逐行暂存视图的键是哪个?

参考答案

space 暂存或取消暂存当前选中的文件;a 暂存或取消暂存全部文件。Enter(选中某个文件时)进入逐行暂存视图。

2. 想把最近三次提交压缩成一个,完整操作顺序是什么?

参考答案

进入提交面板,选中从底部数第三个提交;按 e 进入交互式变基;把最后两个提交的动作改为 s(squash,或 f fixup);Enter 确认并完成变基。

3. 你在功能分支上,想把主分支的改动并到自己这边,用分支面板的哪个键?与 M 有何不同?

参考答案

r 把当前分支变基到选中分支(这里选中主分支);M 是把选中的分支合并进当前分支。前者重写历史为线性,后者保留合并提交。

4. 一个文件既有你不想提交的改动,也想提交其中一部分,怎么做?

参考答案

在文件面板选中该文件按 Enter 进入逐行暂存视图,用 space 只暂存想提交的块或行,回到文件面板按 c 提交,剩下的改动留在工作区。

练习

练习 1:在任意仓库里完成一次「暂存 → 提交 → 推送」。要求:只用 spacecPP 是 push,p 才是 pull)完成,不敲一条 git commitgit push

练习 2:在提交面板,把最近两次提交压缩成一个 fixup 再改提交信息。确认历史从三条变成一条。

练习 3:用 z 撤销练习 2 的提交操作,确认提交历史恢复到压缩前。

资料口径

本文数据与快捷键基于官方 GitHub 仓库 jesseduffield/lazygit 的 README、官方 Keybindings_en.md 与仓库 Releases 页面(v0.64,2026-08 核实)。Stars、Forks 随时间增长;键位随版本演进,以界面内 ? 帮助为最终依据。未验证的功能未写入本文,性能类描述来自二手资料、不给出具体数字。

相关资源

  • 官方仓库:https://github.com/jesseduffield/lazygit
  • 官方快捷键文档:https://github.com/jesseduffield/lazygit/blob/master/docs/keybindings/Keybindings_en.md
  • 官方配置文档:https://github.com/jesseduffield/lazygit/blob/master/docs/Config.md
  • 更新日志:https://github.com/jesseduffield/lazygit/releases

参与讨论

使用 GitHub 登录。欢迎补充事实、异议与实践。