Skip to Content
文件工作台變更與暫存

變更與暫存

左側隊列的「變更」是日常工作停留最久的地方:上面是文件列表,中間是 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。

破壞性操作前會寫恢復快照,見恢復中心。

最後更新於