使用 Lazygit 简化高级 Git 任务

使用 Lazygit 终端 UI 发挥 Git 强大功能的 5 种方法。
137 位读者喜欢这篇文章。
Person using a laptop

如果用一个词来形容 Git,那就是“强大”。 谁都不能否认 Git 确实是一个强大的野兽,但是经过几个月在其中努力完成令人尴尬的基本操作之后,我意识到像我这样的凡人永远无法通过命令行界面来运用这种力量。

我制作了 Lazygit,一个 Git 的终端 UI,以帮助我驯服这只野兽并发挥其力量。 凭借 GitHub 上 15,000 个星标,事实证明我并不是唯一一个为此苦苦挣扎的人! 如果您发现自己正在与 Git 的命令行界面甚至其他 Git GUI 之一作斗争,请继续阅读! 您可能会在这里遇到一个可以节省您时间的功能。

1. 快速暂存文件

输入 git add this/is/my/really/long/filename.txt 绝对不是一件有趣的事情。 即使您复制并粘贴文件名,那仍然需要按九次键。 Lazygit 让您能够以闪电般的速度暂存和取消暂存文件。

假设您刚刚对某些文件进行了一些更改,现在您要提交更改。 当您打开 Lazygit 时,您会发现修改后的文件在 Files 面板中标记为红色,这意味着它们的更改未暂存。 使用箭头键在文件之间导航,然后按 空格键 在暂存和未暂存文件之间切换。

Staging in Lazygit

如果您看到不应该在那里出现的文件,只需按 d,就会弹出一个菜单,用于删除该文件。

如果您只想暂存文件的一部分,请在文件上按 Enter 键,您会发现自己位于 Unstaged Changes 面板中。 从那里,您可以按行按 空格键 仅暂存该行,将其移动到 Staged Changes 面板。

Staging in Lazygit

如果您想完全删除一行(例如,如果您不小心在代码中间留下了一个 console.log),只需按 d 即可。 您可以使用 Tab 键在 Unstaged ChangesStaged Changes 面板之间切换。

2. 简单、交互式的变基

假设您正在处理一个功能分支,而在三个提交之前,您犯了一个错别字。 您尚未提交拉取请求 (PR),并且为了审阅者的理解,您想保持提交之间的逻辑分离。 如果能够通过您的修复来修改原始提交,那不是很好吗? 进入交互式变基。

Git 命令行上交互式变基的用户体验是一个恐怖故事,属于斯蒂芬·金的小说。 要做像修改旧提交这样简单的事情,需要执行以下步骤(未经家长指导,请勿让您的孩子阅读)

  1. 使用 git stash 暂存您要应用的更改。
  2. 复制您要修改的提交的 SHA。
  3. 使用 git rebase --interactive <commit-SHA>^ 开始变基。
  4. (尖叫声从这里开始……)Vim 中打开一个 TODO 文件,您需要在其中找到您的提交,并将该行上的 pick 替换为 edit
  5. 保存文件。
  6. 使用 git stash pop 取消暂存您的更改。
  7. 使用 git commit --amend 修改提交。
  8. 使用 git rebase --continue 继续变基。

仅仅回想起 CLI 恐怖的日子就让我心悸。

在 Lazygit 中,交互式变基的所有简单用例都通过它们自己的快捷键支持。

要在 Lazygit 中使用您当前的暂存更改来修改旧提交,只需导航到该提交并按 Shift+A。 就像那样,您就完成了! 如果在此过程中发生合并冲突,系统将提示您解决它们,一旦解决,系统将提示您继续变基。

Interactive rebasing in Lazygit

同样,您可以使用 s 将提交压缩到下面的提交中,使用 Shift+R 重命名提交,并使用 d 删除提交。

假设您想做一些更复杂的事情,涉及到多个提交。 如果您在提交上按 e,您将启动交互式变基,并且所有上述提交都将显示其变基操作(默认为 pick)。 要更改提交的操作,只需导航到它并按相关的字母:s 代表 squash,p 代表 pick 等。 您实际上是通过 Lazygit 编辑该 TODO 文件,但一切都只需要按一下键。

Interactive rebasing in Lazygit

然后,要开始变基,只需按 m 调出变基选项,然后按 Continue。 这将向前移动,删除一个提交,然后将接下来的三个提交压缩到前一个提交中。 不再有噩梦了!

3. 轻松地进行拣选 (cherry-picking)

在 Lazygit 中,拣选是以复制粘贴的方式完成的。 要复制提交,只需在其上按 c 即可。 复制的提交将以蓝色背景显示。 要将提交粘贴到另一个分支上,请转到 Branches 面板中的分支,然后按 空格键 签出它,然后,回到 Commits 面板,按 v,您的复制的提交将被拣选(即粘贴)到新分支上。

Cherry-picking in Lazygit

4. 搜索提交

每个侧面板都可以使用 + 扩展到半屏模式,然后再扩展到全屏模式。 在全屏模式下,Commits 面板显示更多信息,您可以使用 / 搜索所有信息,并且可以使用 nN 循环浏览结果。 找到您要查找的内容后,您可以使用 空格键 签出提交,使用 t 还原它,并执行大量其他操作。

Searching commits in Lazygit

5. 一键打开 PR

如果不将其合并到代码库中,编写代码有什么意义呢? 要打开拉取请求,只需导航到分支并按 o。 您的浏览器将打开并显示

Open a pull request in Lazygit

试一试!

如果您读到这里,要么您对 Lazygit 非常感兴趣,想尝试一下,要么您正在准备一篇严厉的驳斥,认为当涉及到 Git 别名时,我的按键次数并不那么令人印象深刻。 无论如何,我很乐意在评论中听到您的反馈。 如果您还在犹豫,Lazygit 是免费的,并且易于 下载和安装,所以试一试吧!

接下来阅读什么
标签
User profile image.
我为强大但令人沮丧的命令行程序制作终端 UI。 我还在 jesseduffield.com 上撰写关于 golang 和 react 的博客。

2 条评论

非常酷!

天哪,我希望这不是那些“拥抱、扩展、消灭”的东西。 我有点喜欢 Git。

Creative Commons License本作品根据 Creative Commons Attribution-Share Alike 4.0 International License 获得许可。
© . All rights reserved.