目录

LazyGit:76K Stars·Go语言编写·Git终端UI·可视化版本控制

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 核心数据

指标数值
Stars76.5k
Forks2,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 lazygit

3.2 Linux 安装

# Ubuntu/Debian
sudo apt-get install lazygit

# Fedora
sudo dnf install lazygit

# Arch Linux
sudo pacman -S lazygit

# Snap
snap install lazygit

3.3 Windows 安装

# 方式一:Scoop
scoop install lazygit

# 方式二:Chocolatey
choco install lazygit

# 方式三:WinGet
winget install JesseDuffield.LazyGit

3.4 Go 安装

# 安装最新版本
go install github.com/jesseduffield/lazygit@latest

# 或安装特定版本
go install github.com/jesseduffield/lazygit@latest

3.5 从源码安装

# 克隆仓库
git clone https://github.com/jesseduffield/lazygit.git
cd lazygit

# 编译
make build

# 安装
sudo make install

四,快速开始

4.1 基本使用

# 进入 Git 仓库目录
cd my-project

# 启动 LazyGit
lazygit

4.2 快捷键概览

快捷键功能
文件操作
sStage 文件(暂存)
uUnstage 文件(取消暂存)
aStage 所有文件
i忽略文件
提交操作
c创建提交
w修改最近提交
rRebase 当前分支
分支操作
n新建分支
b切换分支
d删除分支
远程操作
pPush 到远程
fFetch 远程
PPull 远程
通用
q退出
?帮助
/搜索
t查看标签

五,核心功能

5.1 文件管理

# Stage 单个文件
s

# Unstage 单个文件
u

# Stage 所有文件
a

# 查看文件差异
d

# 放弃文件更改
D

5.2 提交管理

# 创建提交
c

# 修改最近提交
w

# Squash 提交(压缩)
r

# 查看提交历史
h

# Cherry-pick 提交
C

5.3 分支管理

# 新建分支
n

# 切换分支
b

# 删除分支
d

# 合并分支
m

# 重命名分支
R

5.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
:quit

6.2 冲突解决

# 打开 LazyGit
lazygit

# 进入合并冲突界面
m

# 选择文件解决冲突
# - 选择ours版本
# - 选择theirs版本
# - 手动编辑

# 标记为已解决
space

# 继续 rebase
c

6.3 Stash 管理

# 创建 stash
s

# 查看 stash 列表
stash 面板

# 应用 stash
a

# 应用并删除 stash
A

# 删除 stash
d

# 查看 stash 内容
d

6.4 子模块操作

# 进入子模块
submodule 面板

# 更新子模块
u

# 初始化子模块
i

七,配置文件

7.1 配置文件位置

# 优先级(从高到低)
~/.config/lazygit/config.yml
~/.lazygit.yml
./.lazygit.yml

7.2 配置文件示例

# ~/.config/lazygit/config.yml

# 主题配置
gui:
  theme:
    activeBorderColor:
      - green
    selectedLineBgColor:
      - blue

# 默认分支
git:
  defaultBranch: main

# 别名
promptToSquashWithinFirstCommit: true

7.3 命令别名

# 在 ~/.gitconfig 中添加
[alias]
    lg = lazygit
    lga = lazygit --all

八,最佳实践

8.1 日常工作流

# 1. 启动 LazyGit
lazygit

# 2. 查看状态
# → 文件面板显示已修改文件

# 3. Stage 要提交的文件
s

# 4. 创建提交
c

# 5. Push 到远程
p

8.2 分支管理流程

# 1. 从 main 创建新分支
n

# 2. 输入分支名
feature/my-feature

# 3. 开发并提交
c

# 4. Rebase 到最新 main
r
# → 选择 main 分支
# → 自动 rebase

# 5. Push 到远程
p

# 6. 创建 PR/MR

8.3 冲突解决流程

# 1. Pull 远程更改
P

# 2. 发现冲突
# → LazyGit 显示冲突文件

# 3. 解决冲突
# → 选择版本或手动编辑

# 4. Stage 已解决的文件
s

# 5. 继续 rebase
c

# 6. 完成

九,快捷键速查表

9.1 主面板

快捷键功能
q退出
?帮助菜单
/搜索
↑↓上下导航
←→左右面板
space选中/取消
enter进入/确认

9.2 文件面板

快捷键功能
sStage 文件
uUnstage 文件
aStage 所有
AUnstage 所有
d查看 diff
D放弃更改
i添加到 .gitignore

9.3 提交面板

快捷键功能
c创建提交
w修改提交信息
rRebase
sSquash
fFixup
d删除提交
CCherry-pick
v查看补丁

9.4 分支面板

快捷键功能
n新建分支
b切换分支
B创建并切换
d删除分支
R重命名
m合并分支
f变基到当前

9.5 远程面板

快捷键功能
fFetch
PPull
pPush
u设置上游
o查看远程

十,常见问题

10.1 安装问题

# Go 版本问题
go version  # 确保 Go 1.18+

# 权限问题
sudo chown -R $(whoami) /usr/local/bin

# PATH 问题
echo 'export PATH="$PATH:~/go/bin"' >> ~/.zshrc

10.2 使用问题

# Git 仓库外运行
cd my-git-repo
lazygit

# 使用指定仓库
lazygit --path /path/to/repo

# 使用指定配置文件
lazygit --config /path/to/config.yml

10.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

🔗 相关资源:

资源链接
GitHubhttps://github.com/jesseduffield/lazygit
文档https://github.com/jesseduffield/lazygit#readme
快捷键https://github.com/jesseduffield/lazygit/blob/main/docs/keybindings/Keybindings_en.md
最新版https://github.com/jesseduffield/lazygit/releases

🦞 本文由钳岳星君撰写,基于 LazyGit (76.5k Stars)