如果用一个词来形容 Git,那就是“强大”。 谁都不能否认 Git 确实是一个强大的野兽,但是经过几个月在其中努力完成令人尴尬的基本操作之后,我意识到像我这样的凡人永远无法通过命令行界面来运用这种力量。
我制作了 Lazygit,一个 Git 的终端 UI,以帮助我驯服这只野兽并发挥其力量。 凭借 GitHub 上 15,000 个星标,事实证明我并不是唯一一个为此苦苦挣扎的人! 如果您发现自己正在与 Git 的命令行界面甚至其他 Git GUI 之一作斗争,请继续阅读! 您可能会在这里遇到一个可以节省您时间的功能。
1. 快速暂存文件
输入 git add this/is/my/really/long/filename.txt 绝对不是一件有趣的事情。 即使您复制并粘贴文件名,那仍然需要按九次键。 Lazygit 让您能够以闪电般的速度暂存和取消暂存文件。
假设您刚刚对某些文件进行了一些更改,现在您要提交更改。 当您打开 Lazygit 时,您会发现修改后的文件在 Files 面板中标记为红色,这意味着它们的更改未暂存。 使用箭头键在文件之间导航,然后按 空格键 在暂存和未暂存文件之间切换。

如果您看到不应该在那里出现的文件,只需按 d,就会弹出一个菜单,用于删除该文件。
如果您只想暂存文件的一部分,请在文件上按 Enter 键,您会发现自己位于 Unstaged Changes 面板中。 从那里,您可以按行按 空格键 仅暂存该行,将其移动到 Staged Changes 面板。

如果您想完全删除一行(例如,如果您不小心在代码中间留下了一个 console.log),只需按 d 即可。 您可以使用 Tab 键在 Unstaged Changes 和 Staged Changes 面板之间切换。
2. 简单、交互式的变基
假设您正在处理一个功能分支,而在三个提交之前,您犯了一个错别字。 您尚未提交拉取请求 (PR),并且为了审阅者的理解,您想保持提交之间的逻辑分离。 如果能够通过您的修复来修改原始提交,那不是很好吗? 进入交互式变基。
Git 命令行上交互式变基的用户体验是一个恐怖故事,属于斯蒂芬·金的小说。 要做像修改旧提交这样简单的事情,需要执行以下步骤(未经家长指导,请勿让您的孩子阅读)
- 使用 git stash 暂存您要应用的更改。
- 复制您要修改的提交的 SHA。
- 使用 git rebase --interactive <commit-SHA>^ 开始变基。
- (尖叫声从这里开始……)Vim 中打开一个 TODO 文件,您需要在其中找到您的提交,并将该行上的 pick 替换为 edit。
- 保存文件。
- 使用 git stash pop 取消暂存您的更改。
- 使用 git commit --amend 修改提交。
- 使用 git rebase --continue 继续变基。
仅仅回想起 CLI 恐怖的日子就让我心悸。
在 Lazygit 中,交互式变基的所有简单用例都通过它们自己的快捷键支持。
要在 Lazygit 中使用您当前的暂存更改来修改旧提交,只需导航到该提交并按 Shift+A。 就像那样,您就完成了! 如果在此过程中发生合并冲突,系统将提示您解决它们,一旦解决,系统将提示您继续变基。

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

然后,要开始变基,只需按 m 调出变基选项,然后按 Continue。 这将向前移动,删除一个提交,然后将接下来的三个提交压缩到前一个提交中。 不再有噩梦了!
3. 轻松地进行拣选 (cherry-picking)
在 Lazygit 中,拣选是以复制粘贴的方式完成的。 要复制提交,只需在其上按 c 即可。 复制的提交将以蓝色背景显示。 要将提交粘贴到另一个分支上,请转到 Branches 面板中的分支,然后按 空格键 签出它,然后,回到 Commits 面板,按 v,您的复制的提交将被拣选(即粘贴)到新分支上。

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

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

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