变更与暂存
左侧队列的「变更」是日常工作停留最久的地方:上面是文件列表,中间是 diff,底部是提交框。
队列
队列顶部用分段控件在「文件 / 变更 / 历史 / 分支 / Stash」之间切换,也可以用 ⌘1–⌘5 直接跳。
「变更」按状态分成三组:
- 已暂存 — 会进入下一次提交;
- 未暂存 — 工作区里相对索引的改动;
- 冲突 — 需要先解决,见冲突。
列表可以按路径或状态排序,也可以在树形与平铺之间切换。未跟踪文件默认显示,可在「设置 → Git」关闭。
暂存
| 粒度 | 入口 |
|---|---|
| 整个文件 | 选中文件按 Space,或文件行的暂存按钮 |
| 片段(hunk) | diff 中该片段的操作条 |
| 行 | 在 diff 中选中一行或多行后暂存 |
暂存和取消暂存用的是同一套粒度。
绑定你看过的那份 diff
每次渲染 diff 时都会记录一个指纹:规范化后的 diff 文本、原始对象的 OID、工作区文件的大小与修改时间。执行文件、片段或行级操作时,应用会先重新计算指纹:
- 一致,才写入索引;
- 不一致,返回「项目已在别处被修改」,不写索引,并重新加载当前状态。
这样做是为了避免把过期的片段补丁应用到已经变化的内容上。用外部编辑器改完文件后看到这条提示,不是错误,重新看一遍再操作即可。
多选与批量
- 同一文件里选中多个片段,会合并成一个补丁一次执行;
- 跨文件的多选会逐个执行,并在结果里分别列出成功、失败与跳过;
- 批量操作开始前会先做检查,批量被中断时保留一份日志,重启后状态栏会提示上次未完成的批次。
行尾与二进制
一个文件混用 CRLF 和 LF 时,片段级与行级操作会被拒绝,整文件操作仍然可用。二进制文件不生成文本 diff,可以直接暂存或取消暂存;图片会显示并排对比或叠加对比。
Diff
- 并排与统一两种布局,长行可以换行显示;
- 可切换忽略空白差异;
- 上下文行数在「设置 → Git」中调整,范围 0–20;
- 支持在 diff 内查找,命中项高亮;
- 图片改动可以并排查看,或叠加并调新图不透明度。
提交
提交框在底部,⌘⏎(Windows / Linux 为 Ctrl+Enter)提交。
- 只提交已暂存的内容。 什么都没暂存时会提示先暂存;
- 暂存全部。 提交框上方的开关可以一次暂存所有未暂存文件,也可在设置里设为默认;
- 修补(Amend)。 改写当前 HEAD;当 HEAD 与上游一致时会提示这可能改写已推送的提交;
- 签名(Signoff)。 勾选后加上
Signed-off-by;提交本身使用 GPG 或 SSH 签名则在「设置 → Git」配置,历史里会显示签名徽标; - 提交模板。 仓库配置了
commit.template时,打开仓库会用模板预填提交框,且只在你没有输入内容时填充; - 最近提交信息。 可以复用本次会话里写过的信息;
- AI 起草。 由 ACP Agent 生成,结果只写入提交框,仍需你确认,见 ACP Agent。
提交信息第一行建议控制在 72 个字符以内,提交框会给出提示。
撤销上一次提交
提交成功后 60 秒内,状态栏显示提交号与「撤销」。撤销等价于 git reset --soft HEAD^:HEAD 退回上一个提交,改动留在暂存区,提交信息回填到提交框(提交框已有草稿时不覆盖)。
只有当前 HEAD 是那次提交、且没有进行中的合并、变基等操作时才可用。不可用时应用会给出可复制的 soft reset 命令,而不是静默失败。
补丁与剪贴板
- 应用
.patch/.diff/.mbox到工作区;补丁只写到工作区,不暂存也不提交; - 从剪贴板应用补丁;
- 用
git am应用邮箱补丁,冲突时停下并在横幅中继续或中止; - 保存整个工作区 diff。
破坏性操作前会写恢复快照,见恢复中心。
最后更新于