Git 和 Pull Request

顶栏里的分支、同步状态和更改,每处更改的差异,以及 Pull Request 和它的检查结果。

项目是 git 仓库时,顶栏会显示它的分支和状态。Kettu 用的是你自己装的 git,Pull Request 则通过 GitHub CLI gh。

需要准备什么

工具用途
PATH 里的 git分支、更改和提交,抓取、拉取和推送
已登录的 GitHub CLIPull Request 和检查结果,创建 Pull Request…,发布…

装好 GitHub CLI 后,在终端里登录一次:

gh auth login

设置 › Git 里能看到两个工具是否已找到,以及 gh 登录的是哪个账号。

顶栏

分支标签先显示分支名,后面只显示用得上的部分:

部分含义
未发布分支还没有上游分支
↑ 加数字待推送的提交
↓ 加数字待拉取的提交
合并中、变基中正在进行的 git 操作
红色警告加数字有冲突的文件
文件图标加数字有更改的文件

分支有 Pull Request 时,后面还有一个标签,写着它的编号和检查状态,点它在 GitHub 上打开。Agent 干活时,以及你切回窗口时,这些都会自己更新。

分支弹窗

点分支打开弹窗,从上到下依次是:

  • 分支名和复制按钮,它基于哪个分支,跟踪哪个上游分支。
  • 拉取和推送。下一步该做的那个按钮带文字和数量。把指针停在按钮上,能看到它要运行的 git 命令,或者它为什么不能用。
  • 远程仓库在 GitHub 上时,显示 Pull Request。
  • 历史:待拉取的提交、未提交的更改、分支的提交,以及分出后默认分支又有了几个新提交。
  • 远程仓库名、上次抓取的时间,和抓取按钮。

把指针停在提交上,能看到完整的提交信息、作者和 ID。右键提交可以复制提交 ID、复制提交信息,推送到 GitHub 后还能在 GitHub 上打开。

查看差异

展开未提交的更改或某个提交,会列出它的文件,每个文件带状态字母和增删的行数。点文件,差异在文件窗格里打开。打开文件打开文件本身,关闭差异回到你之前打开的文件。

抓取、拉取和推送

按钮做什么
抓取git fetch --prune
拉取git pull --ff-only,只在分支单纯落后时可用
推送把分支推送到它的上游分支
发布分支推送新分支并设置上游分支
发布…仓库没有远程仓库时,用 gh 在 GitHub 上建仓库,添加为 origin 并推送

直接推送到默认分支前会先问你。分支已分叉,或者正在合并、变基、有冲突时,弹窗会说明要先完成什么,比如在终端里变基。操作失败时,弹窗会说明原因,查看日志能看到 git 的输出。

想让领先和落后的提交数保持最新,打开设置 › Git › 在后台抓取,每 5 分钟抓取一次。默认关闭。

没有提交按钮

Kettu 不替你提交。让 Agent 提交,或者在终端里运行 git commit。

Pull Request

远程仓库在 GitHub 上、GitHub CLI 已登录时,弹窗显示当前分支的 Pull Request:标题、状态、两端的分支、每项检查和耗时、审查状态,以及合并被什么挡住了。点某项检查,在 GitHub 上打开它。检查进行中时,Kettu 每分钟重新读一次 Pull Request,其他时候每 5 分钟一次。

还没有 Pull Request 时,点创建 Pull Request…,填标题、描述、目标分支,并选择是否为草稿。只有一个提交时,标题预填它的提交信息;有多个时,预填分支名,描述里列出各个提交。分支要先发布。

对话里的 GitHub Pull Request 链接会显示成一个标签,把指针停在上面能看到状态、检查和作者。

没有 GitHub CLI 时

没装 gh 时,在 GitHub 上打开会带你到 GitHub 上创建 Pull Request 的页面。装了但没登录时,弹窗会显示 gh auth login 和复制按钮。