在适用于 Linux 的 Windows 子系统上使用 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 已随适用于 Linux 分发版的大多数 Windows 子系统一起安装,但可能需要更新到最新版本。 还需要设置 git 配置文件。

若要安装 Git,请参阅适用于 Linux 站点的 Git 下载。 每个 Linux 分发版都有自己的包管理器并安装命令。

对于 Ubuntu/Debian 中最新的稳定 Git 版本,请输入以下命令:

sudo apt-get install git

注意

如果尚未安装适用于 Windows 的 Git,可能需要进行安装。

Git 配置文件设置

若要设置 Git 配置文件,请为正在使用的分发打开命令行,并使用此命令设置名称(将“你的名称”替换为首选用户名):

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

使用此命令设置电子邮件(将“youremail@___domain.com”替换为你喜欢的电子邮件):

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

提示

如果还没有 GitHub 帐户,可以在 GitHub 注册一个帐户。 如果你以前从未使用过 Git,GitHub Guides 可以帮助你入门。 如果需要编辑 Git 配置,可以使用内置的文本编辑器(如 nano:nano ~/.gitconfig)执行此作。

建议 使用双重身份验证(2FA)保护帐户。

Git 凭据管理器设置

Git 凭据管理器(GCM) 是一个安全的 Git 凭据帮助程序,构建在 .NET 上,可用于 WSL1 和 WSL2。 它为 GitHub 存储库、Azure DevOps、Azure DevOps Server 和 Bitbucket 启用多重身份验证支持。

GCM 集成到 GitHub 等服务的身份验证流中,在向托管提供商进行身份验证后,请求新的身份验证令牌。 然后,它将令牌安全地存储在 Windows 凭据管理器中。 第一次之后,可以使用 Git 与托管提供商通信,而无需重新进行身份验证。 它将仅访问 Windows 凭据管理器中的令牌。

若要将 GCM 与 WSL 配合使用,必须位于 Windows 10 版本 1903 或更高版本上。 这是第一个包含 GCM 在您的 WSL 发行版中与 Git 互操作所需的 wsl.exe 工具的 Windows 版本。

建议安装 最新的 Git for Windows,以便在 WSL 和 Windows 主机之间共享凭据 & 设置。 Git 凭据管理器包含在 Git for Windows 中,最新版本包含在每个新的 Git for Windows 版本中。 在安装过程中,系统会要求你选择凭据帮助程序,并将 GCM 设置为默认值。

如果你有理由不安装适用于 Windows 的 Git,则可以在 WSL 分发版中将 GCM 作为 Linux 应用程序直接安装,但请注意,这样做意味着 GCM 作为 Linux 应用程序运行,并且不能利用主机 Windows作系统的身份验证或凭据存储功能。 有关如何在没有适用于 Windows 的 Git 的情况下配置 WSL 的说明,请参阅 GCM 存储库。

若要设置 GCM 以用于 WSL 分发版,请打开分发版并输入以下命令:

如果安装的 GIT 为 >= v2.39.0

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

否则,如果安装的 GIT 为 >= v2.36.1

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

否则,如果版本为 < v2.36.1,请输入此命令:

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

注意

使用 GCM 作为 WSL Git 安装的凭据帮助程序意味着 WSL Git 中的任何配置集都不受 GCM(默认情况下)的尊重。 这是因为 GCM 作为 Windows 应用程序运行,因此将使用 Git for Windows 安装来查询配置。 这意味着需要在 Git for Windows 和 WSL Git 中设置 GCM 的代理设置等内容,因为它们存储在不同的文件中(%USERPROFILE%\.gitconfig\\wsl$\distro\home\$USER\.gitconfig)。 你可以配置 WSL,以便 GCM 将使用 WSL Git 配置,但这意味着代理设置对特定 WSL 安装是唯一的,不会与其他或 Windows 主机共享。

将 Git 与 SSH 搭配使用

Git 凭据管理器仅适用于 HTTP(S) 远程。 仍可将 Git 与 SSH 配合使用:

Azure 的其他配置

如果要使用 Azure ReposAzure DevOps,则需要进行一些其他配置:

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

现在,您在 WSL 发行版中执行的任何 git 操作都将使用 GCM。 如果您已经为某个主机系统缓存了凭据,系统将从凭据管理器中访问它们。 如果没有,即使你位于 Linux 控制台中,你也会收到请求凭据的对话框响应。

提示

如果使用 GPG 密钥来确保代码签名的安全性,可能需要将 GPG 密钥与 GitHub 电子邮件相关联

添加 Git Ignore 文件

我们建议向项目添加 .gitignore 文件。 GitHub 提供了一系列有用的 .gitignore 模板,其中包含根据你的用例组织推荐的 .gitignore 文件设置。 例如,下面是 gitHub 的默认 gitignore 模板,用于 Node.js 项目

如果选择 使用 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 行结束问题

其他资源