现已推出!阅读 10 月份的更新内容。

与您的容器共享 Git 凭据

Dev Containers 扩展提供开箱即用的支持,用于在容器内部使用本地 Git 凭据。在本节中,我们将介绍两个受支持的选项。

如果您在本地没有设置用户名或电子邮件地址,系统可能会提示您进行设置。您可以在您的**本地**机器上执行以下命令来完成此操作

git config --global user.name "Your Name"
git config --global user.email "your.email@address"

扩展将在启动时自动将您本地的 .gitconfig 文件复制到容器中,因此您无需在容器本身中执行此操作。

使用凭据助手

如果您使用 HTTPS 克隆您的存储库,并且您的**本地操作系统中配置了凭据助手,则无需任何进一步的设置。**您在本地输入的凭据将在容器中重复使用,反之亦然。

使用 SSH 密钥

在某些情况下,您可能使用 SSH 密钥而不是凭据助手来克隆您的存储库。为了启用此场景,扩展将自动转发您的**本地SSH 代理(如果正在运行)。**

如果您使用 ssh-add 命令运行代理,则可以将您的本地 SSH 密钥添加到代理中。例如,从终端或 PowerShell 运行以下命令

ssh-add $HOME/.ssh/<your ssh key>

在 Windows 和 Linux 上,您可能会收到错误,因为代理未运行(macOS 通常默认运行)。请按照以下步骤解决问题

Windows:

启动一个**本地管理员 PowerShell**,并运行以下命令

# Make sure you're running as an Administrator
Set-Service ssh-agent -StartupType Automatic
Start-Service ssh-agent
Get-Service ssh-agent

Linux

首先,在后台启动 SSH 代理,在终端中运行以下命令

eval "$(ssh-agent -s)"

然后将以下行添加到您的 ~/.bash_profile~/.zprofile(对于 Zsh)中,以便它在登录时启动

if [ -z "$SSH_AUTH_SOCK" ]; then
   # Check for a currently running instance of the agent
   RUNNING_AGENT="`ps -ax | grep 'ssh-agent -s' | grep -v grep | wc -l | tr -d '[:space:]'`"
   if [ "$RUNNING_AGENT" = "0" ]; then
        # Launch a new instance of the agent
        ssh-agent -s &> $HOME/.ssh/ssh-agent
   fi
   eval `cat $HOME/.ssh/ssh-agent` > /dev/null
   ssh-add $HOME/.ssh/<your ssh key> 2> /dev/null
fi

在最后一行,用您的特定 SSH 密钥替换 <your ssh key>

例如 ssh-add $HOME/.ssh/id_ed25519 2> /dev/null

如果您遇到任何问题,您可能需要查看 Dev Containers 扩展的已知限制

共享 GPG 密钥

如果您想 GPG 签署您的提交,您也可以与您的容器共享您的本地密钥。您可以在GitHub 文档中了解有关使用 GPG 密钥签署的信息。

如果您没有设置 GPG,您可以为您的平台配置它

  • 在**Windows**上,您可以安装 Gpg4win
  • 在**macOS**上,您可以安装 GPG Tools
  • 在**Linux**上,**在本地**使用您的系统包管理器安装 gnupg2 包。
  • 在**WSL**上
    • 在 Windows 侧安装 Gpg4win
    • 在您的 WSL 发行版中安装 gpgsudo apt install gpg
    • 在您的 WSL 发行版中注册一个 pinentry GUI。echo pinentry-program /mnt/c/Program\ Files\ \(x86\)/Gpg4win/bin/pinentry.exe > ~/.gnupg/gpg-agent.conf
    • 重新加载 WSL 中的 gpg 代理。gpg-connect-agent reloadagent /bye

注意:对于 Windows 用户,gpg 签名密钥必须使用 Windows GUI 或 CLI(powershell/cmd)配置,而不是在 Git Bash 中配置。即使 Dev Container 位于您的 ~/.gnupg/ 文件夹中(可以在 Windows 资源管理器中访问),它也无法访问在 Git Bash 中设置的 gpg 密钥。

接下来,通过更新您的 Dockerfile 在您的容器中安装 gnupg2

例如

RUN apt-get update && apt-get install gnupg2 -y

或者,如果以非 root 用户身份运行

RUN sudo apt-get update && sudo apt-get install gnupg2 -y

要应用您的配置更改,您需要重建容器。您可以通过从命令面板(F1)运行**Dev Containers:重建容器**来执行此操作。下次容器启动时,您的 GPG 密钥也应该在容器内可用。

注意:如果您之前在容器中使用过 gpg,则可能需要运行**Dev Containers:重建容器**才能使更新生效。