原始碼控制常見問題集
本主題解答有關在 Visual Studio Code 中使用 Git 原始碼控制與 GitHub 的常見問題。
Git
如何還原或取消 Git commit?
使用 Git: Undo Last Commit 命令來還原您最近一次的 commit。這會將您的分支重設為進行該 commit 之前的狀態,包含所有變更。此命令也可以在原始碼控制檢視頂端 Commit 下方的 更多動作 ... 選單中找到。
如何重新命名本機分支?
Git: Rename Branch… 命令會提示您輸入新名稱。
如何在 commit 之前取消 git add?
列在 暫存變更 (Staged Changes) 中的已新增檔案,可以使用 - 圖示或透過拖放來取消暫存。
如何編輯最近的 commit 訊息?
若要更新最近一次本機 commit 的訊息,請使用 Git: Commit Staged (Amend) 命令。這會開啟一個編輯器供您編輯並儲存最新的訊息。請確保沒有其他變更被暫存,否則它們會被包含在該 commit 中。
我已初始化儲存庫,但 ... 選單中的動作全都呈現灰色停用狀態
若要進行 push、pull 與 sync,您需要設定 Git 遠端來源 (origin)。您可以從儲存庫主機取得所需的 URL。取得 URL 後,您需要透過執行幾個命令列動作將其新增至 Git 設定中。例如
> git remote add origin https://github.com/<repo owner>/<repo name>.git
> git push -u origin main
我的團隊使用的是 Team Foundation Version Control (TFVC) 而非 Git。我該怎麼做?
請使用 Azure Repos 擴充功能,這將會啟用 TFVC 支援。
為什麼 Pull、Push 和 Sync 動作永遠不會完成?
這通常表示 Git 中未設定憑證管理,且出於某些原因,您沒有收到憑證提示。
您隨時可以設定 憑證協助程式 (credential helper),以便從遠端伺服器進行 pull 和 push,而不需要讓 VS Code 每次都提示您輸入憑證。
如何使用需要多因素驗證的 Azure DevOps 組織登入 Git?
Git Credential Manager (GCM) 是 Windows、macOS 和 Linux 上建議使用的 Git 憑證協助程式。如果您執行的是 Windows 版 Git,GCM 已經為您安裝並設定好。如果您是在 macOS 或 Linux 上執行,GCM 的 README 中有安裝說明。
我的電腦上安裝了 GitHub Desktop,但 VS Code 卻忽略它
VS Code 的 Git 整合功能僅支援 官方 Git 發行版本。
只要 VS Code 正在執行,我就一直收到 Git 驗證對話方塊
VS Code 會自動從伺服器擷取變更,以便向您呈現即將到來變更的摘要。Git 驗證對話方塊獨立於 VS Code 本身,並且是您目前的 Git 憑證協助程式的一部分。
避免這些提示的方法之一是設定一個能夠記住您憑證的 憑證協助程式。
另一個選項是透過變更下列設定來停用自動擷取功能:"git.autofetch": false。
為什麼 VS Code 警告我 Git 儲存庫可能有潛在的不安全性?
VS Code 使用 git.exe 來執行所有 Git 作業。從 Git 2.35.2 開始,當儲存庫所在的資料夾擁有者不是目前使用者時,系統會防止使用者在該儲存庫中執行 Git 作業,因為該儲存庫被視為具有潛在的不安全性。
如果您嘗試開啟此類儲存庫,VS Code 會在原始碼控制檢視中顯示歡迎檢視畫面或錯誤通知。歡迎檢視畫面與通知兩者都包含 Manage Unsafe Repositories 命令,可讓您檢閱潛在不安全儲存庫的清單、將其標記為安全並加以開啟。Manage Unsafe Repositories 命令也可在命令選擇區 (⇧⌘P (Windows、Linux Ctrl+Shift+P)) 中使用。將儲存庫標記為安全會將儲存庫位置新增至 safe.directory git 設定中。
在 Windows 上,發生這種情況常見的情境是使用以「系統管理員身分」執行的應用程式 (例如 Windows Terminal 或 VS Code) 來複製儲存庫,但卻使用另一個未以「系統管理員身分」執行的應用程式或執行個體 (例如 VS Code) 來開啟儲存庫。
為什麼 VS Code 沒有自動探索工作區或開啟檔案之父資料夾中的 Git 儲存庫?
VS Code 使用 git rev-parse --show-toplevel 來判斷 Git 儲存庫的根目錄。在大多數情況下,Git 儲存庫的根目錄位於工作區內,但在某些情境下,Git 儲存庫的根目錄位於工作區或開啟檔案的父資料夾中。雖然在工作區或開啟檔案的父資料夾中開啟 Git 儲存庫對進階使用者來說是一項很棒的功能,但對新使用者而言可能會造成困惑。我們曾見過這種困惑導致放棄這些 Git 儲存庫中的變更而造成資料遺失的情況。
為了避免困惑並降低資料遺失的風險,VS Code 將會在原始碼控制檢視中顯示通知與新的歡迎檢視畫面,而且不會自動開啟來自工作區與開啟檔案之父資料夾的 Git 儲存庫。
您可以使用 git.openRepositoryInParentFolders 設定來控制如何處理來自父資料夾的 Git 儲存庫。如果您想要還原舊版行為,請將 git.openRepositoryInParentFolders 設定設為 always。
我可以在 VS Code 中使用 SSH Git 驗證嗎?
可以,不過 VS Code 與沒有複雜密碼 (passphrase) 的 SSH 金鑰搭配使用時最為順暢。如果您擁有帶有複雜密碼的 SSH 金鑰,您需要從 Git Bash 提示字元啟動 VS Code,以繼承其 SSH 環境。
GitHub
支援 GitHub Enterprise 嗎?
VS Code 提供官方支援,可用於對 GitHub Enterprise 伺服器進行驗證。開啟 GHES 儲存庫的本機簽出版本,系統就會提示您使用 GitHub Enterprise Server 帳戶登入。
疑難排解
如需診斷與解決 Git 問題的協助,請參閱 疑難排解指南。該指南涵蓋了如何使用 Git 輸出記錄檔以及啟用追蹤記錄以取得詳細的診斷資訊。