暫存和提交更改
建立有重點且描述清晰的提交有助於您和您的團隊理解程式碼庫的歷史。VS Code 提供整合的 Git 工具,用於暫存更改和建立提交,並支援對要包含的更改進行細粒度控制。
本文件介紹了 VS Code 中的暫存和提交工作流,從 Git 的兩步流程到使用 AI 輔助生成提交訊息以及在提交前審查更改。
Git 工作流
Git 使用一個兩步過程來儲存您的工作:暫存和提交。當您修改檔案時,Git 會跟蹤這些更改,但不會自動將它們包含在您的下一個提交中。暫存允許您選擇要包含在每個提交中的更改。
將暫存視為準備工作快照。您可以一次暫存所有更改以進行全面的提交,也可以暫存特定檔案甚至單個行,以建立更專注、邏輯性更強的提交,以便以後更容易檢視和理解。
檢視更改
原始碼管理檢視(⌃⇧G (Windows, Linux Ctrl+Shift+G))是管理 Git 儲存庫中更改的中心樞紐。更改根據其暫存狀態分為兩個部分
- 更改:列出所有已修改、新增或刪除但尚未暫存以供提交的檔案
- 暫存的更改:列出已暫存並準備好提交的檔案

請注意,已更改的檔案旁邊會列出一個“U”(未跟蹤)、“M”(已修改)或“D”(已刪除)圖示,以指示更改的型別。此更改指示器也會顯示在“資源管理器”檢視和已修改檔案的編輯器選項卡標題中。
活動欄中的原始碼管理圖示還會顯示一個帶有受影響檔案數量的徽章,讓您快速瞭解未提交的更改。
您可以按平鋪或樹狀結構檢視更改列表。在原始碼管理檢視工具欄中,透過 **更多操作**(**...**)> **檢視和排序** > **以樹狀/列表檢視顯示** 選項來切換此檢視。
編輯器標尺指示器
為了幫助您快速識別檔案中的更改,VS Code 會在編輯器中行號旁邊顯示標尺指示器,以表示自上次提交以來新增、修改或刪除的行。您也可以在 小地圖 中看到這些指示器。
標尺顏色指示更改型別
- 綠色條:自上次提交以來新增的新行
- 藍色條:自上次提交以來修改的行
- 紅色三角形:已刪除的行(顯示在刪除點上方)
選擇標尺指示器時,將出現更改的內聯 diff 預覽。您可以使用相應的按鈕直接從此預覽中暫存或還原更改。

您可以使用以下設定自定義標尺指示器行為
- scm.diffDecorations:控制 diff 裝飾何時出現(全部、標尺、概覽、小地圖或無)
- scm.diffDecorationsGutterAction:控制標尺選單中可用的操作
- scm.diffDecorationsGutterPattern:自定義用於標尺裝飾的模式
- scm.diffDecorationsGutterVisibility:控制何時顯示標尺裝飾(始終或懸停時)
- scm.diffDecorationsGutterWidth:設定標尺指示器的寬度
- scm.diffDecorationsIgnoreTrimWhitespace:忽略 diff 裝飾中的空白字元更改
暫存更改
暫存更改可為將它們新增到下一個提交做準備。您可以暫存整個檔案或特定行和程式碼塊,以獲得更精細粒度的控制。
要暫存單個檔案,請將滑鼠懸停在“**更改**”列表中的檔案上,然後選擇“**+**”(加號)圖示,或右鍵單擊檔案並選擇“**暫存更改**”。您也可以將檔案從“**更改**”部分拖放到“**暫存的更改**”部分進行暫存。

當您使用樹狀檢視時,可以透過暫存整個資料夾來暫存它們。要一次性暫存所有已修改的檔案,請將滑鼠懸停在“**更改**”標題上,然後選擇“**+**”(加號)圖示。
在命令面板(⇧⌘P (Windows, Linux Ctrl+Shift+P))中有更多專門的暫存操作。鍵入“Git: Stage”可檢視暫存檔案的選項。
暫存特定行或程式碼塊
除了暫存整個檔案外,您還可以暫存檔案的特定部分。部分暫存可讓您建立更專注的提交。例如,如果您在同一檔案中進行了格式更改和 bug 修復,則可以單獨提交它們,並附帶適當的提交訊息。
您可以從 diff 編輯器執行部分暫存
-
在“**更改**”列表中選擇一個檔案以開啟 diff 編輯器
-
選擇要暫存的行
-
使用 diff 編輯器標尺旁邊的“**暫存**”按鈕僅暫存選定的行

您也可以右鍵單擊選定區域,選擇“**暫存選定範圍**”或從命令面板執行“**Git: 暫存選定範圍**”。
取消暫存更改
要從暫存中刪除檔案,請將滑鼠懸停在“**暫存的更改**”列表中的檔案上,然後選擇“-”(減號)圖示,或右鍵單擊並選擇“**取消暫存更改**”。檔案將移回到“**更改**”部分,而不會丟失您的修改。

同樣,您也可以使用標尺旁邊的“**取消暫存**”按鈕,從 diff 編輯器中取消暫存特定行或程式碼塊。
提交您的更改
暫存更改後,您可以建立提交以將其儲存到本地儲存庫。要建立提交,您需要編寫一個描述更改的提交訊息。此訊息可以幫助您和他人理解提交時的提交歷史的用途。
編寫提交訊息
提交訊息描述您正在提交的更改,並幫助他人(以及您未來的自己)理解提交的目的。在原始碼管理檢視頂部的提交訊息輸入框中鍵入您的訊息,然後選擇“**提交**”以儲存您的暫存更改。
為了幫助您編寫提交訊息,請選擇提交訊息輸入框中的閃光圖示 ,使用 AI 根據您的暫存更改生成訊息。您可以 建立自定義指令 來指導 AI 生成訊息。

如果您想編寫多段提交訊息,可以使用完整的編輯器而不是輸入框。透過 git.useEditorAsCommitInput 設定啟用此功能。當您在沒有提交訊息的情況下提交更改時,將開啟一個新的編輯器選項卡供您編寫訊息。
要迴圈瀏覽之前的提交訊息,請在聚焦於提交訊息輸入框時,按下 ↑ (Windows, Linux Up) 和 ↓ (Windows, Linux Down)。
提交更改
選擇原始碼管理檢視中的“**提交**”按鈕,以提交“**暫存的更改**”部分中的更改。任何未暫存的更改將保留在“**更改**”部分中,供將來提交。
要一次性提交所有更改(暫存和未暫存),請選擇“**更多操作**”(**...**)選單,然後選擇“**提交**”>“**提交全部**”。這將一步完成所有已修改檔案的暫存和提交。
修改上一次提交
如果您需要修改最近一次提交,可以修改它而不是建立新提交。這對於新增遺漏的更改或更正提交訊息非常有用。
要修改提交,請選擇“**提交**”按鈕下拉選單,然後選擇“**提交(修改)**”,或使用“**更多操作**”(**...**)選單中的“**提交暫存(修改)**”選項。
僅修改尚未推送到共享儲存庫的提交。修改已推送的提交會重寫歷史記錄,並可能給其他協作者帶來問題。
撤銷上次提交
如果您需要撤銷上次提交,請在原始碼管理檢視中選擇“**更多操作**”(**...**)選單,然後選擇“**提交**”>“**撤銷上次提交**”。這將從您的分支歷史記錄中刪除上次提交,但會將該提交中的所有更改保留在“**暫存的更改**”部分中。
放棄更改
要完全放棄未提交的更改並將檔案恢復到上次提交的狀態,請在原始碼管理檢視中右鍵單擊檔案,然後選擇“**放棄更改**”。或者,將滑鼠懸停在“**更改**”列表中的檔案上,然後選擇放棄圖示(一個指向左的弧形箭頭)。
放棄的更改將被移至“回收站”(Windows)或“廢紙簍”(macOS/Linux),讓您有機會在需要時恢復它們。
使用 diff 編輯器檢視更改
diff 編輯器顯示了檔案中的更改內容。它會並排顯示原始版本和修改版本的比較。diff 編輯器可以並排檢視或內聯檢視開啟。
要開啟 diff 編輯器,請在原始碼管理檢視的“**更改**”或“**暫存的更改**”列表中選擇任何檔案,以檢視該檔案相對於上次提交版本的更改。
對於大型檔案,透過選擇 diff 編輯器工具欄中的“**摺疊未更改區域**”按鈕來摺疊未更改的部分。這有助於您專注於實際的更改。您還可以使用“**下一個更改**”和“**上一個更改**”按鈕快速在更改之間導航。
並排檢視與內聯檢視
預設情況下,diff 編輯器會顯示一個並排比較,左側為原始檔案,右側為您的更改。

透過在 diff 編輯器工具欄中選擇“**更多操作**”(**...**)>“**內聯檢視**”切換到內聯檢視,以便在一個編輯器中檢視更改。

使用 diffEditor.renderSideBySide 設定配置您首選的預設檢視。
從 diff 編輯器暫存和還原
diff 編輯器在每個更改旁邊包含一個帶有“**暫存**”和“**還原**”按鈕的標尺。這些按鈕允許您
- 直接從 diff 檢視暫存單個程式碼塊或行
- 還原特定更改而不影響其他修改
如果您在 diff 編輯器中選擇了特定行,按鈕將僅對您的選擇生效。
您可以使用 diffEditor.renderGutterMenu 設定隱藏 diff 編輯器標尺。
輔助功能 diff 檢視器
對於螢幕閱讀器使用者,VS Code 提供輔助功能 diff 檢視器,它以統一的 patch 格式顯示更改。要開啟輔助功能 diff 檢視器,請使用 diff 編輯器工具欄中的“**更多操作**”(**...**)選單,然後選擇“**開啟輔助功能 diff 檢視器**”或使用 F7 鍵盤快捷鍵。
使用 **轉到下一個差異**(F7)和 **轉到上一個差異**()命令在更改之間導航。
使用 AI 檢視程式碼更改
VS Code 使您能夠在提交之前使用 AI 輔助來檢視未提交的更改。這些 AI 功能是對手動程式碼審查的補充,有助於在開發工作流的早期捕獲問題。
執行 AI 驅動的程式碼審查以檢視未提交的更改
-
在原始碼管理檢視中選擇“**程式碼審查**”按鈕

-
VS Code 分析您的更改,並生成審查評論和建議,這些評論和建議將顯示為編輯器中的疊加註釋

Git blame 資訊
VS Code 可以在編輯器和狀態列中內聯顯示 git blame 資訊。將滑鼠懸停在狀態列項或編輯器內聯提示上可檢視詳細的 git blame 資訊。
要啟用或停用 git blame 資訊,請使用 **Git: 切換 Git Blame 編輯器裝飾** 和 **Git: 切換 Git Blame 狀態列項** 命令,或配置這些設定
您可以使用 git.blame.editorDecoration.template 和 git.blame.statusBarItem.template 設定來自定義在編輯器和狀態列中顯示的訊息格式。您可以使用變數來表示最常見的資訊。
例如,以下模板顯示了提交的主題、作者姓名以及相對於當前時間的作者日期
{
"git.blame.editorDecoration.template": "${subject}, ${authorName} (${authorDateAgo})"
}
要調整編輯器裝飾的顏色,請使用 git.blame.editorDecorationForeground 主題顏色。
提交歷史圖譜檢視
原始碼管理檢視中的原始碼管理圖提供了一個視覺化表示,展示您的提交歷史和分支關係。當您配置了遠端儲存庫時,可以看到您相對於遠端儲存庫的超前或落後提交數量。
該圖包含當前分支、當前分支的上游分支以及可選的基分支。圖的根是這些分支的共同祖先。

該圖提供以下功能
- 選擇一個條目以檢視該提交中已更改的檔案。選擇“**開啟更改**”操作以在編輯器中檢視該提交的 diff。
- 右鍵單擊提交以執行簽出、變基、將其作為上下文新增到聊天等操作。
- 選擇一個檔案以在編輯器中檢視該檔案的 diff。
- 透過右鍵單擊提交併選擇“**與...比較**”、“**與遠端比較**”或“**與合併基線比較**”來選擇一個提交併將其與另一個分支或標籤進行比較。
使用圖譜檢視工具欄中的操作來選擇分支、獲取、拉取、推送和同步更改。
檔案歷史時間線檢視
時間線檢視位於檔案資源管理器底部,是一個統一的檢視,用於視覺化檔案的事件歷史。例如,您可以在時間線檢視中檢視 Git 提交或本地檔案儲存。

瞭解有關 時間線檢視 的更多資訊。
後續步驟
- 分支和工作樹 - 瞭解分支管理、Git 工作樹和 stash 操作
- 儲存庫和遠端 - 瞭解克隆、釋出和與遠端儲存庫同步
- 合併衝突 - 處理合併分支時的衝突
- 使用 GitHub - 瞭解如何使用拉取請求和問題
- VS Code 中的 Copilot - 發現更多由 AI 驅動的開發功能