Skip to content

lazygit

why

JetBrains IDE 中的 Git 管理非常好用,可是却要启动一个很重的 IDE。

VSCode 中的 Git 管理过于简陋,很多复杂操作无法完成:reset、rebase、修改某个提交(追加、删除、排序)、worktree 管理。

有没有轻量又强大的 Git 工具呢?可以实现:

  • 可视化:不用手动输入命令
  • 易于修改提交:追加、删除已提交中的某个文件改动、排序、修改提交信息等
  • 易于处理 merge/rebase 冲突
  • 易于文件内选择性提交
  • 易于 reset
  • 易于 rebase
  • 易于 stash
  • 易于管理 worktree,尤其是在 AI 时代多分支开发时,stash + worktree 的高效操作非常重要。
  • 易于推送:推送到任意分支
  • 易于自行自定义命令

lazygit 就是当前最佳答案,并且经过长时间的社区验证,可靠性非常高。260802 时 Star 数超过 80.9k。

how

○ 安装启动

sh
# 安装 https://github.com/jesseduffield/lazygit

# 启动
lazygit

# 退出
q

○ 面板操作

  • 聚焦面板:按面板左上角的数字
  • 切换面板内的 tab:向右 ],向左 [
  • 面板内导航:同 vim,下 jkhl

○ commit

提交:改动面板选择 -> c -> 填写提交信息 -> 回车

修改提交信息:提交面板选择 -> r -> 修改 -> 回车

追加提交到任意 commit:改动面板选择 -> 提交面板选择某个记录 commitA -> A -> 追加提交到该 commitA

移除提交文件:提交面板选择 -> 回车 -> 文件树选择文件 -> d -> 删除提交的文件

合并提交 squash:提交面板 -> v -> 多选提交记录 -> s -> 合并选择的提交记录到其前一个提交记录中

移动提交:提交面板选择 -> 下移 ctrl+j -> 上移 ctrl+k

○ push

push 到其他分支:分支 -> u -> 移除 upstream -> P -> 推送,选择 upstream -> 冲突弹出 force 选择 -> 确定推送

推送某个 commit 到远端,不直接支持,改用:提交面板 -> 按 y 复制 commit id -> 按 : 进入 shell command 模式 -> 输入推送命令 git push origin {commit_id}:refs/heads/

○ rebase

rebase 到远程其他分支:分支 -> 远程源 -> f -> fetch 代码 -> 回车查看源中的分支 -> 选择分支 -> r -> rebase 到该远程分支

○ cherry-pick

cherry-pick 其他分支的 commit:分支 -> 选择目标分支 -> 回车查看 commit -> C -> 复制 -> 3 -> 当前分支提交面板 -> V -> 粘贴,即 cherry-pick -> 回车确认

○ tag

tag 并推送:提交面板 -> T 创建标签 -> 标签面板 -> P 推送标签

○ worktree

worktree 创建:分支面板/远程面板中的分支面板 -> 选择分支 -> w 创建 worktree。

sh
# 外套目录:将相同仓库的多个 worktree 目录汇聚到一个目录中

# 1 创建父目录
mkdir -p ~/work/project-tree
cd ~/work/project-tree

# 2 克隆项目到 base(base worktree -> 主分支)
git clone xxx base

# 3 基于 base 目录创建 worktree 来开发
cd base
lazygit
访问量 PV:Blocked用户数 UV:Blocked