Pull Request、更新与冲突
Pull Request 区域只在 Ghast 管理的 Worktree 中显示,并要求 GitHub CLI 已安装、已登录且能访问当前仓库。普通工作区仍可使用分支、提交、拉取和推送,但没有这套完整 PR 控件。
连接正确的 GitHub 账户
若面板提示 GitHub CLI 不可用,使用安装入口;已安装但未登录时,按提示认证并刷新 Git 面板。继续前核对 CLI 当前账户、仓库远端和目标组织,避免用错误账户创建或合并 PR。
创建 PR 前
确认以下状态:
- 当前工作区和分支属于这个任务;
- 工作树没有遗漏的目标修改或混入的无关文件;
- 需要的文件已经提交并推送;
- PR 目标分支正确;
- 本地检查、远端检查和未完成项都已明确;
- 提交中没有密钥、构建产物或个人文件。
没有 PR 时,面板显示 创建 PR。创建后可查看编号、标题、状态、草稿状态、增删行和文件数,并可在浏览器中打开。
这些按钮不是直接执行固定脚本,而是向主编码会话发送请求并启动一次 Agent 运行:
| 按钮 | 发给 Agent 的工作 |
|---|---|
| 创建 PR | 按 Conventional Commits 整理一个或多个提交,并使用 gh pr create 创建 PR。 |
| 修复 | 先把失败的 CI 日志下载到本地文件,再要求 Agent 读取日志、修改代码、提交并推送。 |
| 提交并推送 | 按 Conventional Commits 整理提交并推送当前分支。 |
| 推送 | 只推送当前分支。 |
按钮按当前状态互斥显示:工作树有本地修改时只显示 提交并推送;没有本地修改但有未推送提交时显示 推送;两者都没有时显示 更新 和 合并。合并只有在 GitHub 报告 MERGEABLE 时可点击。每次 Agent 运行结束后,重新检查会话结果、diff、Git 和 GitHub 远端状态。
检查与审查
面板会汇总 CI 检查、审查和可合并状态。失败项可能提供 修复;Ghast 会先把失败日志保存到本机,再把文件路径带回编码任务。点击前先打开失败详情,确认失败属于当前提交;远端任务不会因为开始一次新的修复运行而自动取消。
检查通过和审查批准只说明 GitHub 报告的状态。登录、设备权限、外部 Provider、人工审批以及产品内真实流程仍需分别验证。
更新会立即开始 rebase
更新没有预览或第二次确认,点击后会立即把任务分支 rebase 到识别出的基线。操作前先核对目标分支、工作树是否干净、提交是否已保存,以及终端中是否还有 Git 操作。
发生冲突且客户端识别到正在进行的 rebase 时,面板会显示冲突文件、进度以及 使用 AI 解决、继续 Rebase 和 中止 Rebase。如果没有出现冲突卡,仍应在 Git 面板和终端检查实际 rebase 状态。
使用 AI 解决使用 设置 → 通用 中的全局 Tool Model,而不是当前编码会话的模型。它会生成完整文件内容,直接覆盖冲突文件并立即执行 git add;当前没有结果预览或写入前确认。界面随后显示解释与置信度,但这不能证明业务行为正确。逐个打开已写入的文件和 diff,确认两边需要保留的内容;全部正确后再选择 继续 Rebase。无法安全判断时选择 中止 Rebase,回到更新前状态后人工处理。
合并会立即执行 squash merge
合并没有二次确认,点击后会立即请求使用 squash 方式合并。点击前必须在 GitHub 中核对 PR、目标分支、当前账户、检查与审查状态,并确认团队允许 squash merge。
合并成功后,Ghast 显示以下英文选项:
| 当前按钮 | 实际结果 |
|---|---|
| Keep worktree | 保留本地 Worktree 和任务分支,并清除该 Worktree 上保存的 PR 关联信息 |
| Delete worktree | 强制移除 Worktree 检出并删除 Ghast 中的 Worktree 记录;不会删除任务分支 |
| Delete and archive conversation | 执行同样的 Worktree 清理,并永久删除关联会话;当前不是可恢复归档,也不会删除任务分支 |
| Decide later | 暂不清理,稍后自行处理 |
删除前检查未提交文件、未推送提交、需要保留的终端输出和对话结论。清理使用强制 Worktree 移除,但即使磁盘清理失败,Ghast 仍可能移除自己的 Workspace 记录;操作后必须检查原路径是否仍存在。任务分支需要在确认无用后另行删除。清理选项不会替你备份代码或会话。
当前 Delete worktree 的次级说明可能写着会一并移除分支,但实际清理只移除 Worktree 检出和 Ghast 记录,任务分支仍保留。操作后在 Git 中确认分支和路径,再单独决定是否删除分支。