Git 和 Pull Request
顶栏里的分支、同步状态和更改,每处更改的差异,以及 Pull Request 和它的检查结果。
项目是 git 仓库时,顶栏会显示它的分支和状态。Kettu 用的是你自己装的 git,Pull Request 则通过 GitHub CLI gh。
需要准备什么
| 工具 | 用途 |
|---|---|
PATH 里的 git | 分支、更改和提交,抓取、拉取和推送 |
| 已登录的 GitHub CLI | Pull 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 和复制按钮。