lazygit
终端里的 Git TUI,用键盘操作 commit、branch、diff、stash,配合 tmux popup 使用最优雅。
#type / resource
#status / evergreen
#tech / dev
#resource / lazygit
#resource / git
#media / tool
#interface / cli
[!info] related notes
lazygit
是什么
lazygit 是一个终端 Git TUI(Text User Interface),用键盘操作 Git 的常用功能:stage、commit、branch、merge、rebase、stash、diff。比直接敲 Git 命令更直观,比 GUI 工具更轻量。
安装
# macOS
brew install lazygit
# Linux (Go)
go install github.com/jesseduffield/lazygit@latest
# Arch Linux
pacman -S lazygit
# Windows
scoop install lazygit
验证:
lazygit --version
基本使用
在 Git 仓库目录下直接运行:
lazygit
核心面板
┌──────────────┬──────────────┐
│ Files │ Branches │
│ (暂存区) │ (分支列表) │
├──────────────┼──────────────┤
│ Commits │ Stash │
│ (提交历史) │ (暂存栈) │
├──────────────┴──────────────┤
│ Main (Diff) │
│ (差异预览区域) │
└─────────────────────────────┘
常用操作
| 按键 | 操作 |
|---|---|
空格 | stage / unstage 文件 |
c | commit |
P | push |
p | pull |
o | 打开文件(在编辑器中) |
i | 编辑 .gitignore |
1-5 | 切换面板 |
] / [ | 切换到下一个/上一个面板 |
Enter | 展开/折叠项目 |
a | stage all / unstage all |
d | 弹出操作菜单(discard、reset 等) |
e | 编辑文件 |
? | 帮助 / 快捷键列表 |
q | 退出 |
分支操作
| 按键 | 操作 |
|---|---|
b | 切换分支面板 |
n | 新建分支 |
空格 | 切换到选中分支 |
M | merge 到当前分支 |
r | rebase 到选中分支 |
d | 删除分支 |
Stash 操作
| 按键 | 操作 |
|---|---|
s | stash 当前改动 |
g | pop stash |
d | drop stash |
配合 tmux 使用
最优雅的方式是把 lazygit 放在 tmux popup(浮窗)里,而不是长期占一个 window。
tmux 配置
在 ~/.tmux.conf 中添加:
# Prefix + g 打开 lazygit 浮窗
bind-key g display-popup -E -w 90% -h 90% 'lazygit'
按 Ctrl+a 再按 g,弹出 lazygit,操作完按 q 退出,回到原来的代码窗口。
为什么用 popup 而不是 window
| 方式 | 适合场景 |
|---|---|
| tmux popup | git status、commit、push、简单 merge。操作完就走。 |
| tmux window | 复杂 rebase、冲突解决、需要边看 diff 边改代码。 |
| tmux pane | 边写代码边跑 git diff --watch 或 tig。 |
什么时候该用单独的 git window
遇到以下情况时,切到专门的 tmux git window:
git rebase -i有冲突需要手动解决- 需要反复在编辑器和 diff 之间切换
- 需要跑
git log --graph分析分支历史
配置文件
lazygit 的配置文件在 ~/.config/lazygit/config.yml:
# ~/.config/lazygit/config.yml
gui:
showIcons: true
nerdFontsVersion: "3"
git:
autoFetch: true
paging:
colorArg: always
pager: delta --dark --paging=never
使用 delta 作为 diff pager 可以获得更好的差异显示效果。
边界
- lazygit 适合日常 Git 操作,复杂的历史重写(如 filter-branch、bisect)还是用命令行更灵活。
- 在极小的终端窗口里(宽度 < 80 字符),lazygit 的布局会压缩,体验下降。
- 如果团队用 Git CLI 已经很熟练,lazygit 的价值在于减少记忆负担和操作步骤,不是必需品。