Appearance
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,下
j上k左h右l
○ 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