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。

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

最後更新於