開始在 Windows 子系統 Linux 版上使用 Git

Git 是最常用的版本控制項系統。 使用 Git 可以追蹤自己對檔案所做的變更,因此可記錄已完成的工作,並在需要時將檔案還原成舊版。 Git 也可讓協作變得更容易,讓多位人員做的變更全部合併成一個來源。

Git 可以安裝在 Windows「和」WSL 上

重要考量因素:啟用 WSL 並安裝 Linux 發行版本時,會在電腦上安裝與 Windows NTFS C:\ 磁碟不同的新檔案系統。 Linux 磁碟的名稱是掛接點, 不是字母。 以 WSL 為例,檔案系統 / 的根目錄是根磁碟分割或資料夾的掛接點。 / 下的所有物件,都不是相同的磁碟。 假設我已在膝上型電腦安裝了兩個 Ubuntu 版本(20.04 和 18.04),也安裝了 Debian。 如果我開啟這些發行版本,使用 cd ~ 命令選取主目錄,然後輸入 explorer.exe . 命令,Windows 檔案總管將開啟並顯示該發行版本的目錄路徑。

Linux 發行版本 存取主資料夾的 Windows 路徑
Ubuntu 20.04 \\wsl$\Ubuntu-20.04\home\username
Ubuntu 18.04 \\wsl$\Ubuntu-18.04\home\username
Debian \\wsl$\Debian\home\username
Windows PowerShell C:\Users\username

提示

如果您要從 WSL 發行版本命令列存取 Windows 檔案目錄,而不是從 C:\Users\username ,您將使用 /mnt/c/Users/username 存取目錄,因為 Linux 發行版本會將 Windows 檔案系統檢視為掛接磁碟。

要使用 Git 的每個檔案系統,都要安裝 Git。

依散發版本顯示 Git 版本

安裝 Git

多數 Windows 子系統 Linux 版都已安裝 Git,但您可能需要更新到最新版本。 您也需要設定 Git 組態檔。

若要安裝 Git,請參閱 Linux 版 Git 下載網站。 每個 Linux 發行版本都有自己的封裝管理員和 install 命令。

如需 Ubuntu/Debian 的 Git 最新穩定版本,請輸入命令:

sudo apt-get install git

注意

如果您還沒安裝 Git for Windows ,請先安裝。

Git 組態檔設定

若要設定 Git 組態檔,請開啟所用發行版本的命令列,然後使用此命令設定您的名稱(以您慣用的使用者名稱取代「您的名稱」):

git config --global user.name "Your Name"

使用此命令設定您的電子郵件(以您慣用的電子郵件取代「youremail@domain.com」):

git config --global user.email "youremail@domain.com"

提示

如果還沒有 Git 帳戶,可以在 GitHub 註冊一個。 如果您之前從未使用過 Git,GitHub 指南可以協助您開始使用。 如果您需要編輯自己的 Git 設定,可以使用 nano 等內建文字編輯器:nano ~/.gitconfig

建議使用雙重要素驗證保護帳戶 (2FA)

Git 認證管理員設定

Git 認證管理員 (GCM)是建置在 .NET 的安全 Git 認證協助程式,可與 WSL1 和 WSL2 搭配使用。 並能針對 GitHub 存放庫、Azure DevOps Azure DevOps Server 和 Bitbucket 啟用多重要素驗證支援。

GCM 已整合到 GitHub 等服務的驗證流程中,只要您通過主機服務提供者驗證,GCM 會要求新的驗證權杖, 並將權杖安全地儲存在 Windows 認證管理員中。 第一次設定之後,就可以使用 Git 與您的主機服務提供者對話,不需要重新驗證。 其只會在 Windows 認證管理員中存取權杖。

為了同時使用 GCM 與 WSL,您必須使用 Windows 10 版本 1903 以上版本。 這個 Windows 版本是第一個包含了讓 GCM 在 WSL 發行版本件中與 Git 交互操作而需要的 wsl.exe 工具。

建議您安裝 最新的 Git for Windows ,以便共用 WSL 與 Windows 主機之間的認證和設定。 Git for Windows 內含 Git 認證管理員,每個 Git for Windows 最新版本都有 Git 認證管理員最新版本。 安裝時,系統會要求您選取認證協助程式,並將 GCM 設為預設值。

如果您不能安裝 Git for Windows,可以在 WSL 發行版本中將 GCM 當作 Linux 應用程式安裝,但請注意,這樣做表示 GCM 是以 Linux 應用程式執行,而且無法利用主機 Windows 作業系統的驗證或認證儲存體功能。 如需瞭解如何在 沒有 Git for Windows 的情況設定 WSL,請參閱 GCM 存放庫。

若要設定 GCM 以與 WSL 發行版本一起使用,請開啟發行版本並輸入以下命令:

If GIT installed is >= v2.39.0

git config --global credential.helper "/mnt/c/Program\ Files/Git/mingw64/bin/git-credential-manager.exe"

else if GIT installed is >= v2.36.1

git config --global credential.helper "/mnt/c/Program\ Files/Git/mingw64/libexec/git-core/git-credential-manager.exe"

else if version is < v2.36.1 輸入此命令:

git config --global credential.helper "/mnt/c/Program\ Files/Git/mingw64/bin/git-credential-manager-core.exe"

注意

將 GCM 當作 WSL Git 安裝的認證協助程式使用,表示 GCM 不會遵守 WSL Git 中的任何組態集(根據預設)。 這是因為 GCM 就像 Windows 應用程式執行,因此 GCM 會使用 Git for Windows 安裝查詢組態。 換句話說,您必須在 Git for Windows 和 WSL Git 中設定 GCM 的 Proxy 設定等項目,因為它們儲存在不同檔案中(%USERPROFILE%\.gitconfig\\wsl$\distro\home\$USER\.gitconfig)。 您可以將 WSL 設定成,讓 GCM 使用 WSL Git 組態,但這表示 Proxy 設定只限於特定 WSL 安裝,不會與其他人或 Windows 主機共用。

Git 與 SSH

Git 認證管理員只適用於 HTTP(S) 遠端。 Git 仍然可以與 SSH 一起使用 :

Azure 的其他組態

如果您想使用 Azure Repos Azure DevOps ,需要做其他設定:

git config --global credential.https://dev.azure.com.useHttpPath true

現在,您在 WSL 發行版本內執行的任何 git 作業都會使用 GCM。 如果您已為主機快取了認證,則其會從認證管理員來存取認證。 如果沒有,則即使在 Linux 主控台中,也會收到對話回應要求您提供認證。

提示

如果使用 GPG 金鑰進行程式碼簽署安全性,可能需要將 GPG 金鑰與 GitHub 電子郵件產生關聯。

新增 Git Ignore 檔案

建議新增 .gitignore 檔案到專案裡。 GitHub 提供實用的 .gitignore 範本集合,內含推薦的 .gitignore 檔案設定(根據您的使用案例整理出來)。 以下範例是適用於 Node.js 專案的 GitHub 預設 gitignore 範本

如果您選擇使用 GitHub 網站建立新的存放庫,勾選核取方塊即可使用 README 檔案初始化您的存放庫、為特定專案類型設定 .gitignore 檔案,以及在需要時新增授權。

Git 和 VS Code

Visual Studio Code 隨附 Git 內建支援,包括資料來源控制項索引標籤,可顯示您所做的變更,並為您處理各種 Git 命令。 深入瞭解 VS Code 的 Git 支援

Git 行尾結束符號

如果您在 Windows、WSL 或容器之間使用相同的存放庫資料夾,請務必設定相同的行尾結束符號。

Windows 和 Linux 使用不同的預設行尾結束符號,所以 Git 可能會報告有大量檔案經過修改,但除了行尾結束符號之外,其實並無差異。 若要避免這類報告產生,您可以使用 .gitattributes 檔案或在 Windows 端全域停用行尾結束符號轉換。 請參閱此 VS Code 文件,瞭解如何解決 Git 行尾結束符號問題

其他資源