遠端儲存庫
2021 年 6 月 10 日,作者:Brigit Murtaugh,@BrigitMurtaugh,Eric Amodio,@eamodio
注意:遠端儲存庫擴充功能自此部落格文章發布後已重新命名為 GitHub 儲存庫。您也可以查看最新文件,其中將包含有關此擴充功能的最新資訊。
我們很高興推出適用於 Visual Studio Code 的全新遠端儲存庫擴充功能!這是我們與 GitHub 的朋友們合作建立的全新體驗,旨在讓您在 VS Code 內快速且安全地處理原始碼儲存庫。
更快速開啟原始碼儲存庫的方式
在 VS Code 中,我們從一開始就提供對 Git 的整合支援,並且我們透過擴充功能支援許多其他原始碼控制管理 (SCM) 提供者。這讓開發人員可以直接在 VS Code 內複製和處理儲存庫。
然而,開發人員每天所做的大部分工作都涉及閱讀其他人的程式碼:審查提取請求、瀏覽開放原始碼儲存庫、試用新技術或專案、檢查上游相依性以偵錯應用程式等等。所有這些的共同點是,第一步通常是將儲存庫複製到本機,然後在您最喜歡的程式碼編輯器(我們希望是 VS Code!)中開啟程式碼。然而,複製儲存庫需要時間,如果您忘記提取,可能會導致您審查過時版本的儲存庫,而且如果您不熟悉程式碼,有時可能會造成安全風險。
由 GitHub 發布的全新遠端儲存庫擴充功能,讓在 VS Code 中開啟原始碼儲存庫的體驗變得即時且安全。有了它,您可以直接從 VS Code 內快速瀏覽、搜尋、編輯和提交到任何遠端 GitHub 儲存庫(以及即將推出的 Azure Repos),無需複製!
您可以處理任意數量的儲存庫,而無需將任何原始碼儲存在您的機器上。遠端儲存庫為您節省時間和本機磁碟空間,並讓您能夠完全在 VS Code 內完成所有原始碼控制任務。
在這篇部落格文章中,我們將探討開始使用遠端儲存庫有多麼容易、在開啟您的第一個遠端儲存庫後可以做什麼、支援此虛擬環境的技術細節,以及您今天如何向我們提供意見回饋。
在 VS Code 中開啟您的第一個遠端儲存庫
讓我們在 VS Code 中開啟一個遠端儲存庫。首先,請確保您已安裝遠端儲存庫擴充功能。
目前,遠端儲存庫支援 GitHub 儲存庫,即將支援 Azure Repos。在這篇部落格文章中,我們將從開啟 VS Code 儲存庫 (microsoft/vscode) 開始。
安裝遠端儲存庫擴充功能後,我們可以立即透過點擊 VS Code 左下角的遠端指示器(以及來自您已安裝的任何其他遠端開發擴充功能的命令)來存取其開啟遠端儲存庫命令
如果您之前未從 VS Code 登入 GitHub,系統會提示您驗證您的 GitHub 帳戶。登入後,搜尋儲存庫或 PR,選擇您想要的那個,您就可以開始了。
在下面的簡短影片中,我們搜尋並選擇 VS Code 儲存庫,VS Code 重新載入,儲存庫的內容會載入,就好像我們在本機複製它一樣
您無需離開 VS Code 就能瀏覽儲存庫並做出貢獻。您感覺就像在處理本機程式碼,使用熟悉的 VS Code 介面,並且可以使用 VS Code 檔案總管、搜尋、時間軸檢視、快速開啟等功能,當然還有原始碼控制。
您現在已連線到所謂的虛擬工作區(有關虛擬工作區的更多資訊請參閱下方);遠端指示器顯示「GitHub」。當您將滑鼠游標懸停在遠端指示器上方時,您會收到通知,告知某些功能在虛擬工作區中不可用
虛擬工作區是一種特殊設定,某些功能(例如擴充功能)已停用或功能受限。您可以透過點擊將滑鼠游標懸停在遠端指示器上方時顯示的某些功能連結,輕鬆找出哪些擴充功能已停用。
點擊連結會顯示哪些擴充功能已停用,以及哪些擴充功能的功能受限。當您將滑鼠游標懸停在擴充功能上方時,可以看到功能受限的情況。
如果您想在虛擬工作區中手動啟用擴充功能,您可以使用使用者 settings.json
檔案中的 extensions.supportVirtualWorkspaces
設定。
"extensions.supportVirtualWorkspaces": { "<extensionID>": true }
請記住,擴充功能可能未實作在沒有存取本機檔案系統的情況下處理虛擬工作區,因此擴充功能可能無法如預期般運作。
您已開啟儲存庫,下一步是什麼?
在您的儲存庫開啟的情況下,遠端儲存庫讓您輕鬆地為您的專案做出貢獻。
簡化的 Git 工作流程,讓您的專案保持最新狀態
遠端儲存庫可協助您每次都保持在儲存庫的最新版本,無需任何複雜的 Git 命令。
每當您開啟新的儲存庫時,您都會開啟最新版本。每當遠端儲存庫偵測到 GitHub 有新變更時,它都會在狀態列中列出您需要提取的提交次數
並在檔案總管中醒目提示已修改的檔案
當您提交變更時,它們會自動顯示在 GitHub 上 – 您無需推送您的變更或發布您建立的任何新分支。
建立或簽出提取請求
遠端儲存庫與 GitHub Pull Requests and Issues 擴充功能 搭配良好,可讓您直接在 VS Code 中審查和管理來自 GitHub 的提取請求和問題。並行使用這兩個擴充功能,即可快速簽出 PR 並處理問題,而無需在本機複製程式碼或離開 VS Code。
您可以變更您的程式碼、建立新分支和基於該變更的提取請求 (PR),然後簽出 PR,所有這些都在幾次點擊中完成。
您可以在我們的使用 GitHub 文章中了解有關 GitHub Pull Requests and Issues 擴充功能的更多資訊。
將變更隔離到分支
當您完成工作時,可能需要在分支之間切換。在典型的環境中,當您需要決定要暫存或提交哪些變更時,這可能會變得棘手。
遠端儲存庫可讓您輕鬆地同時處理不同的分支。當您暫停在一個分支上的工作並切換到新分支時,系統不會詢問您是否要暫存變更 - 變更會自動保留在上一個分支上。當您回到先前的分支時,您的變更仍然存在,您可以從上次中斷的地方繼續。
讓我們探索如何將變更推送到分支。
在狀態列中,選擇您目前的分支以開啟分支清單,例如「main」
選擇+ 建立新分支...並輸入您分支的名稱
然後您可以切換到該新分支
新分支將不包含您先前分支中的任何變更。
限制
使用遠端儲存庫時存在某些限制
- 偵錯、終端機和工作 - 目前不支援。終端機在本機檔案系統上開啟,並且無法存取遠端儲存庫的虛擬檔案系統。
- 有限的語言智慧 - 諸如 IntelliSense 和前往定義等功能可能會受到影響,因為許多語言尚不了解遠端儲存庫的虛擬化環境。
- 搜尋 - GitHub 搜尋本身存在限制,例如不索引分支。遠端儲存庫可以避免此限制,並透過啟用索引執行全文檢索搜尋。索引會從 GitHub 提取儲存庫的淺層複製,並在本機執行完整搜尋,提供比 GitHub 的模糊預設分支原生搜尋更強大的功能。您可以從搜尋檢視在遠端儲存庫中啟用索引。
- 擴充功能限制 - 並非所有擴充功能都能支援在虛擬工作區中執行,但隨著時間推移,將會有更多擴充功能支援它。嚴重依賴存取本機檔案的擴充功能無法支援此設定。有關更多詳細資訊,請參閱下方的虛擬工作區章節 。
我們才剛開始這趟旅程,因此預計隨著我們繼續開發,功能集將會成長,限制也會縮小。
在更強大的環境中繼續工作
使用遠端儲存庫時,VS Code 在並非所有功能都可用的環境中運作,因為沒有實體檔案系統。這非常適合快速開始瀏覽儲存庫,但是當您準備好進行更多「進階」工作時,例如
- 您想要積極處理儲存庫並獲得 VS Code 的完整功能。
- 您需要透過定期從遠端提取來主動追蹤儲存庫的變更。
為了轉移到更進階的工作流程,遠端儲存庫提供了一種讓您「升級」環境並在那裡繼續工作的方式,從您目前所在的位置繼續。
點擊左下角的遠端指示器,然後選擇繼續在...上工作。
您將看到三個選項
- 在本機複製儲存庫:將目前的儲存庫複製到您的本機機器。將會彈出本機檔案總管,讓您選擇磁碟上的位置來複製遠端儲存庫。
- 在容器磁碟區中複製儲存庫:使用開發容器擴充功能在 Docker 容器磁碟區中複製目前的儲存庫(您需要安裝 開發容器擴充功能和 Docker)。VS Code 將重新載入並使用開發容器連線,遠端指示器現在將顯示 開發容器:{映像名稱}。
- 在 Codespaces 中開啟:在 GitHub Codespace 中繼續您的工作。當您選擇此選項時,瀏覽器將會開啟並將您導向此儲存庫的 Codespaces 清單。
現在我們已經探索了如何在 VS Code 中使用遠端儲存庫,我們想描述一些支援此體驗的技術細節,以及如何確保您的擴充功能在遠端儲存庫工作階段中運作。
虛擬檔案系統和工作區
支援此遠端工作的核心概念是虛擬檔案系統和虛擬工作區。
作為終端使用者,您只需要知道您想要處理哪個儲存庫或 PR – VS Code 將負責處理虛擬檔案系統並為您管理您的工作區。作為擴充功能開發人員,您會想要採用虛擬檔案系統 API,以確保您的擴充功能行為符合預期。
虛擬檔案系統如何運作
當您在傳統的 git 工作流程中工作時,您會「git clone」一個儲存庫,然後將副本儲存到您電腦的本機檔案系統。但是當使用遠端儲存庫時,程式碼並不存在於您的本機電腦上;它仍然只存在於 GitHub 上。
您透過虛擬檔案系統處理程式碼,虛擬檔案系統是與實體存在於磁碟上的檔案的抽象隔離層。虛擬檔案系統可以從程式碼主機(例如 GitHub)、雲端儲存或資料庫提供內容,並將這些內容無縫地作為檔案提供給 VS Code 中的使用者。
當您在虛擬檔案系統上開啟工作區時,它被稱為虛擬工作區。在虛擬工作區中工作時,您仍然可以存取 VS Code 功能,包括擴充功能。
確保您的擴充功能在虛擬工作區中運作
為了讓擴充功能正常運作,它們必須支援虛擬檔案系統。
當擴充功能沒有程式碼,但只是純粹的色彩主題、按鍵繫結、程式碼片段或語法擴充功能時,它可以在虛擬工作區中執行,而無需進行任何採用。
執行實際程式碼的擴充功能(表示它定義了主要進入點)需要檢查並可能需要採用。
虛擬檔案系統的 API 支援 是透過 FileSystemProvider
介面。檔案系統提供者是為新的 URI 協定(例如,vscode-vfs
)註冊的,並且該檔案系統上的資源將由使用該協定的 URI 表示 (vscode-vfs://github/microsoft/vscode/package.json
)。
擴充功能的 package.json
中有一個 capabilities
屬性,而 virtualWorkspaces
子屬性用於發出訊號,指示擴充功能是否適用於虛擬工作區。
您可以在虛擬工作區擴充功能作者指南中了解有關虛擬檔案系統、工作區以及如何為擴充功能實作它們的更多資訊。
意見回饋與延伸閱讀
我們非常興奮能讓您試用遠端儲存庫,並且迫不及待想收到您的意見回饋。
請安裝遠端儲存庫擴充功能。您可以提交任何問題或功能請求,或在 Twitter 上推文您的想法 @code。
您也可以查看我們關於如何使用遠端儲存庫擴充功能的全新 YouTube 影片。
如果您是擴充功能作者,請查看適用於擴充功能作者的虛擬工作區支援指南,並在我們的追蹤問題中分享任何問題或意見回饋。您也可以加入擴充功能作者社群 Slack 群組。
祝您編碼愉快!
Brigit Murtaugh,VS Code 專案經理 @BrigitMurtaugh
Eric Amodio,VS Code 首席軟體工程師 @eamodio