进阶 onorca.dev 2026-10-18 18:52:10 · 21 阅读

第40章 在 Orca 中完成 Commit 与 Push

Commit & push from Orca

在 Orca 中即可完成 Commit、Push 以及发起 Review。Commit 面板紧邻 Diff 查看器,专为常见工作流设计——审查、暂存、提交、推送、继续下一步。

Commit

在 Diff 视图中按 hunk 或按文件暂存变更。在底部面板编写 commit message,或者使用 “Generate with AI”,让 Orca 基于已暂存的变更自动生成草稿。当焦点在 Source Control 且主要操作为 Commit 时,按下 Commit 按钮(macOS 上为 Cmd-Enter,Windows / Linux 上为 Ctrl-Enter)。

仓库配置的 pre-commit hooks 照常运行。若 hook 失败,Orca 会内联展示输出内容。若 commit 失败,可从失败详情使用 “Fix with AI”,在活跃 worktree 中启动默认 agent,并传入 hook 输出、尝试的 commit message 和暂存文件列表。agent 仅接收修复指令——不会被要求绕过 hooks、执行 commit、push 或发起 review。

Push

Push 将 worktree 的分支推送到 origin,首次推送时设置 upstream。若分支落后,Orca 不会静默执行 force-push。当你已重写历史(rebase、amend、squash),且远端仅有本地 commit 的旧版本副本时,Source Control 面板会将 “Force push with lease” 作为显式独立操作呈现——绝不作为普通 Push 的兜底回退。标签会显示将被替换的 commit 数量及 upstream 分支名,让你清楚即将发生什么。Force push 使用 `--force-with-lease`,因此若远端状态已过期(即本地对远端的视图陈旧),推送会中止,而非覆盖他人的 commit。

发起 Hosted Review

分支推送后,使用 Source Control 面板的 hosted review 操作创建 pull request 或 merge request。提交前请确认 base 分支、标题、描述及 draft 状态。Bitbucket Cloud 支持从同一 composer 创建 pull requests;因无 draft PR 概念,故隐藏 Draft 选项。在 GitHub 上,若选定的 base 分支已存在 open PR,你可选择 “Stack this PR above #N” —— 参见 Stacked pull requests。

在已推送的分支上执行 “Create PR” 时,将运行配置的 generation agent,先草拟标题和描述再提交,而非发送占位符标题和空正文。即使 agent 返回不同的 draft 状态,你选择的 Draft 选项也会保留。

若 Orca 在 “Create PR” 流程中需运行后续 commit 且该 commit 失败——如 hooks 拒绝或工作区处于不可提交状态——对话框将展示详细的失败摘要,包含 hook 输出及下一步操作按钮,而非让你回到面板且失去上下文。可从摘要使用 “Fix with AI” 将失败交给 agent 处理,或自行解决后重新运行。

在 create-review 对话框中,若希望 Orca 基于分支 diff 和 commit 草拟标题、描述及 draft 状态,请使用 “Generate pull request details with AI”。生成内容旨在提供简短的 ELI5 问题/解决方案段落及关联 issue 指导(若附带 GitHub issue,则区分 Fixes 与 Refs)。Orca 会保留你选定的 base 分支,拒绝空描述,并在出错时给出清晰错误提示以便重试,避免提交空正文。创建 review 前请审查各字段。若 OMP 为选定的 action agent,Source Control AI 可通过 OMP 执行这些生成操作。

Per-repo AI action recipes

“Generate with AI”、“Generate pull request details with AI”、“Fix with AI” 和 “Resolve with AI” 均为 Source Control AI actions——每项均由一个 action recipe 支撑,该 recipe 决定了 Orca 在触发操作时使用的 agent、CLI 参数和 prompt 模板。可在 Settings → Git & Source Control → Action recipes 下编辑,作为全局默认值或限定于当前仓库。

模板可包含变量,如用于 commit messages 的 `{basePrompt}`、`{branch}`、`{stagedFiles}`、`{stagedPatch}` 和 `{linkedIssue}`;PR details 还支持 `{baseBranch}`、`{currentTitle}`、`{currentBody}`、`{commitSummary}`、`{changedFiles}` 和 `{patch}`。

`{linkedIssue}` 扩展为 workspace 关联的 GitHub issue 编号,若无关联则为空(包括纯 Linear/GitLab workspace)。建议使用指令性措辞——未关联时,单独的 `Fixes #{linkedIssue}` 会变成 `Fixes #`。

若仓库有针对某操作的自有 recipe,保存全局默认值的变更不会影响它——设置面板会展示 “Repository overrides” 提示,列出哪些仓库偏离了默认值及其覆盖内容(agent、CLI 参数或 command 模板),并提供 Review 链接,跳转至该仓库设置以更新或移除 override。

Amend

Amend 是显式操作——通过 Commit → Amend 触发。若 commit 已推送,Orca 不会自动 amend,除非你确认。

Source Control 面板

侧边栏的 Source Control 面板在不离开当前视图的情况下暴露相同操作:暂存和丢弃文件、编写 commit message,并一键执行 Commit、Push、Pull 或 Sync。即使包含非 ASCII 字符,路径也以 UTF-8 渲染。当变更文件列表达到上限时,“Stage all” 仍会暂存所有变更,因为 host 会解析完整路径集合。

面板顶部的分支上下文行显示当前分支(或 detached HEAD)堆叠在 compare base 上方(branch → base),确保 Create PR 和远程操作不会遮挡当前分支信息。若分支有可用的 merge base,紧凑芯片会显示相对于该分叉点的总增删行数(单个 ranged diff,而非已暂存/未暂存区域的总和)。若 host 发布了拆分数据,悬停芯片可查看 Code breakdown:Source、Tests 和 Generated(Generated 仅在非零时显示)——仅为路径启发式,非内容分析。长分支名会截断,以免遮挡芯片。

右键点击变更文件可 “Copy Path” 或 “Copy Relative Path”(相对于 worktree 根目录)。

面板底部的 primary 按钮随状态变化,确保下一步有用操作总是一键可达:存在未暂存变更时为 Stage Files,随后为 Commit,再根据分支相对于 upstream 的状态显示 Push / Pull / Sync。

当 merge、rebase、cherry-pick 或 revert 产生冲突时,Source Control 会在 “Review conflicts” 旁显示 “Resolve with AI”,让你可选择将冲突集交给 agent 处理,或自行检查后继续。对于不再需要的进行中 merge 或 rebase,可从 Source Control 使用 “Abort merge” 或 “Abort rebase”。

Next steps

Hosted reviews, issues & Actions —— 连接拥有 review 的 provider。 Annotate AI Diff —— 在提交前留下行注释。

评论 (0)