LazyGit:76K Stars·Go语言编写·Git终端UI·可视化版本控制
posts posts 2026-04-12T02:29:31+08:00LazyGit 是一个简单的 Git 终端 UI,使用 Go 语言编写。它旨在通过可视化界面让 Git 版本控制更加用户友好,支持交互式 Rebase、冲突解决等功能。技术笔记Git, Go, 终端, TUI, 版本控制目录
LazyGit:76K Stars·Go语言编写·Git终端UI·可视化版本控制·交互式Rebase·冲突解决
一,项目概述
1.1 LazyGit 是什么
LazyGit 是一个简单的 Git 终端 UI,使用 Go 语言编写。它旨在通过可视化界面让 Git 版本控制更加用户友好。
“A simple terminal UI for git commands”
核心理念:让 Git 命令行操作变得可视化,无需记忆复杂命令,点击即可完成版本控制。
1.2 核心数据
| 指标 | 数值 |
|---|---|
| Stars | 76.5k ⭐ |
| Forks | 2,757 |
| 贡献者 | 3,000+ |
| 提交数 | 2,000+ |
| 最新版本 | v0.61.1 (2026-04) |
| 许可证 | GPL-3.0 |
| 语言 | Go 98.7% |
1.3 成绩单
┌─────────────────────────────────────────────────────────────┐
│ LazyGit 成绩单 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 🌟 GitHub: 76.5k Stars │
│ 🔧 语言: Go 98.7% │
│ 📦 安装: brew / go install │
│ 🎯 定位: Git 可视化终端界面 │
│ ✨ 特点: 轻量、快速、用户友好 │
│ │
└─────────────────────────────────────────────────────────────┘二,核心原理
2.1 架构概览
┌─────────────────────────────────────────────────────────────┐
│ LazyGit 架构 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 用户交互 │
│ ↓ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ LazyGit TUI (gocui) │ │
│ │ ┌──────────────┐ ┌──────────────┐ │ │
│ │ │ 文件面板 │ │ 提交面板 │ │ │
│ │ │ (Files) │ │ (Commits) │ │ │
│ │ └──────────────┘ └──────────────┘ │ │
│ │ ┌──────────────┐ ┌──────────────┐ │ │
│ │ │ 分支面板 │ │ 标签面板 │ │ │
│ │ │ (Branches) │ │ (Tags) │ │ │
│ │ └──────────────┘ └──────────────┘ │ │
│ └─────────────────────────────────────────────────────┘ │
│ ↓ │
│ libgit2 / go-git │
│ ↓ │
│ Git 仓库 │
│ │
└─────────────────────────────────────────────────────────────┘2.2 工作流程
# LazyGit 内部工作流程
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ 用户操作 │ ──▶ │ TUI 渲染 │ ──▶ │ Git 执行 │
│ (键盘/鼠标) │ │ (gocui) │ │ (libgit2) │
└──────────────┘ └──────────────┘ └──────────────┘三,安装与配置
3.1 macOS 安装
# 方式一:Homebrew(推荐)
brew install lazygit
# 方式二:MacPorts
sudo port install lazygit3.2 Linux 安装
# Ubuntu/Debian
sudo apt-get install lazygit
# Fedora
sudo dnf install lazygit
# Arch Linux
sudo pacman -S lazygit
# Snap
snap install lazygit3.3 Windows 安装
# 方式一:Scoop
scoop install lazygit
# 方式二:Chocolatey
choco install lazygit
# 方式三:WinGet
winget install JesseDuffield.LazyGit3.4 Go 安装
# 安装最新版本
go install github.com/jesseduffield/lazygit@latest
# 或安装特定版本
go install github.com/jesseduffield/lazygit@latest3.5 从源码安装
# 克隆仓库
git clone https://github.com/jesseduffield/lazygit.git
cd lazygit
# 编译
make build
# 安装
sudo make install四,快速开始
4.1 基本使用
# 进入 Git 仓库目录
cd my-project
# 启动 LazyGit
lazygit4.2 快捷键概览
| 快捷键 | 功能 |
|---|---|
| 文件操作 | |
s | Stage 文件(暂存) |
u | Unstage 文件(取消暂存) |
a | Stage 所有文件 |
i | 忽略文件 |
| 提交操作 | |
c | 创建提交 |
w | 修改最近提交 |
r | Rebase 当前分支 |
| 分支操作 | |
n | 新建分支 |
b | 切换分支 |
d | 删除分支 |
| 远程操作 | |
p | Push 到远程 |
f | Fetch 远程 |
P | Pull 远程 |
| 通用 | |
q | 退出 |
? | 帮助 |
/ | 搜索 |
t | 查看标签 |
五,核心功能
5.1 文件管理
# Stage 单个文件
s
# Unstage 单个文件
u
# Stage 所有文件
a
# 查看文件差异
d
# 放弃文件更改
D5.2 提交管理
# 创建提交
c
# 修改最近提交
w
# Squash 提交(压缩)
r
# 查看提交历史
h
# Cherry-pick 提交
C5.3 分支管理
# 新建分支
n
# 切换分支
b
# 删除分支
d
# 合并分支
m
# 重命名分支
R5.4 远程操作
# Fetch 远程
f
# Pull 远程
P
# Push 到远程
p
# 查看远程
o六,高级功能
6.1 交互式 Rebase
# 进入 rebase 模式
r
# 在 rebase 界面中:
# - 选择提交
# - p: pick(保留)
# - s: squash(压缩)
# - d: drop(删除)
# - e: edit(编辑)
# - r: reword(修改信息)
# - f: fixup(压缩并保留消息)
# 保存并完成
:write
:quit6.2 冲突解决
# 打开 LazyGit
lazygit
# 进入合并冲突界面
m
# 选择文件解决冲突
# - 选择ours版本
# - 选择theirs版本
# - 手动编辑
# 标记为已解决
space
# 继续 rebase
c6.3 Stash 管理
# 创建 stash
s
# 查看 stash 列表
stash 面板
# 应用 stash
a
# 应用并删除 stash
A
# 删除 stash
d
# 查看 stash 内容
d6.4 子模块操作
# 进入子模块
submodule 面板
# 更新子模块
u
# 初始化子模块
i七,配置文件
7.1 配置文件位置
# 优先级(从高到低)
~/.config/lazygit/config.yml
~/.lazygit.yml
./.lazygit.yml7.2 配置文件示例
# ~/.config/lazygit/config.yml
# 主题配置
gui:
theme:
activeBorderColor:
- green
selectedLineBgColor:
- blue
# 默认分支
git:
defaultBranch: main
# 别名
promptToSquashWithinFirstCommit: true7.3 命令别名
# 在 ~/.gitconfig 中添加
[alias]
lg = lazygit
lga = lazygit --all八,最佳实践
8.1 日常工作流
# 1. 启动 LazyGit
lazygit
# 2. 查看状态
# → 文件面板显示已修改文件
# 3. Stage 要提交的文件
s
# 4. 创建提交
c
# 5. Push 到远程
p8.2 分支管理流程
# 1. 从 main 创建新分支
n
# 2. 输入分支名
feature/my-feature
# 3. 开发并提交
c
# 4. Rebase 到最新 main
r
# → 选择 main 分支
# → 自动 rebase
# 5. Push 到远程
p
# 6. 创建 PR/MR8.3 冲突解决流程
# 1. Pull 远程更改
P
# 2. 发现冲突
# → LazyGit 显示冲突文件
# 3. 解决冲突
# → 选择版本或手动编辑
# 4. Stage 已解决的文件
s
# 5. 继续 rebase
c
# 6. 完成九,快捷键速查表
9.1 主面板
| 快捷键 | 功能 |
|---|---|
q | 退出 |
? | 帮助菜单 |
/ | 搜索 |
↑↓ | 上下导航 |
←→ | 左右面板 |
space | 选中/取消 |
enter | 进入/确认 |
9.2 文件面板
| 快捷键 | 功能 |
|---|---|
s | Stage 文件 |
u | Unstage 文件 |
a | Stage 所有 |
A | Unstage 所有 |
d | 查看 diff |
D | 放弃更改 |
i | 添加到 .gitignore |
9.3 提交面板
| 快捷键 | 功能 |
|---|---|
c | 创建提交 |
w | 修改提交信息 |
r | Rebase |
s | Squash |
f | Fixup |
d | 删除提交 |
C | Cherry-pick |
v | 查看补丁 |
9.4 分支面板
| 快捷键 | 功能 |
|---|---|
n | 新建分支 |
b | 切换分支 |
B | 创建并切换 |
d | 删除分支 |
R | 重命名 |
m | 合并分支 |
f | 变基到当前 |
9.5 远程面板
| 快捷键 | 功能 |
|---|---|
f | Fetch |
P | Pull |
p | Push |
u | 设置上游 |
o | 查看远程 |
十,常见问题
10.1 安装问题
# Go 版本问题
go version # 确保 Go 1.18+
# 权限问题
sudo chown -R $(whoami) /usr/local/bin
# PATH 问题
echo 'export PATH="$PATH:~/go/bin"' >> ~/.zshrc10.2 使用问题
# Git 仓库外运行
cd my-git-repo
lazygit
# 使用指定仓库
lazygit --path /path/to/repo
# 使用指定配置文件
lazygit --config /path/to/config.yml10.3 性能问题
# 大仓库优化
# 在配置文件中添加
git:
paging:
color: always
skipHookReload: true十一,总结
LazyGit 是 76.5k Stars 的 Git 终端 UI:
| 维度 | 说明 |
|---|---|
| 🌟 人气 | 76.5k Stars,2,757 Forks |
| 🔧 语言 | Go 98.7%,高性能 |
| 🎯 定位 | Git 可视化终端界面 |
| ⚡ 特点 | 轻量、快速、用户友好 |
| 📦 安装 | brew / go install / 源码 |
核心优势:
- ✅ 简单易用:点击即可完成 Git 操作
- ✅ 快速高效:Go 语言编写,响应迅速
- ✅ 功能完整:覆盖日常 Git 操作
- ✅ 跨平台:macOS/Linux/Windows
- ✅ 免费开源:GPL-3.0
🔗 相关资源:
🦞 本文由钳岳星君撰写,基于 LazyGit (76.5k Stars)