在 Azure Devops 自托管代理服务器上的管道脚本中使用时,应如何配置 git 用户名和电子邮件?

时间:2021-01-20 15:53:10

标签: git azure-devops

我在需要使用 git 的 Azure Devops 管道中运行 bash 脚本。 The docs 说:

<块引用>

开始之前,请确保您帐户的默认身份设置为:

git config --global user.email "you@example.com"
git config --global user.name "Your Name"

他们还说:

<块引用>

撤消 git 配置更改。

如果我像我一样配置 git,我应该这样做,如果我将配置设置回以前的状态就可以了。所以在我的脚本中,我添加了一行 git config --list 来找出默认用户名和电子邮件应该是什么,但它看起来像这样:

core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true
remote.origin.url=xxxxx
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
gc.auto=0
branch.xxxxxxxx.remote=origin
branch.xxxxxxxx.merge=refs/heads/xxxxxx

这不包括电子邮件和用户名,但是当我在本地计算机上使用此命令时,我可以看到它们。

我尝试使用非本地用户名和电子邮件配置 git,如下所示:

$ git config --global user.name "John Doe"

但我收到错误:

<块引用>

致命:无法读取用户名

为什么 git config --list 返回此配置,将配置设置回空字符串是否安全?

1 个答案:

答案 0 :(得分:0)

您似乎已将自托管代理配置为作为服务运行,对吗?

您需要了解以下几点:

  1. git config --list”命令正在读取来自三个不同位置的信息(更多详细信息,请参阅 here)。

    • [path]/etc/gitconfig 文件。
    • ~/.gitconfig~/.config/git/config 文件。
    • 您当前使用的任何存储库的 Git 目录(即 .git/config)中的配置文件。
  2. 您通过“user.name”设置的用户信息(user.emailgit config --global) /strong>' 命令存储在 '~/.gitconfig' 或 '~/.config/git/config' 文件中。根据这个文件的介绍,它存储了特定于您个人的值

    任何登录计算机并设置“git config --global”的用户都会在计算机系统上生成这个gitconfig文件(例如,Windows 计算机上的“C:/Users/{username}/.gitconfig”)。每个用户只能访问自己的gitconfig文件。

  3. 如果将自托管代理配置为作为服务运行,则该代理是系统上的网络服务。它也有自己的 gitconfig 文件(例如 Windows 计算机上的“C:/WINDOWS/ServiceProfiles/NetworkService/.gitconfig”)。代理也只能访问自己的 gitconfig 文件。

    由于您尚未通过代理设置“git config --global”,因此没有为代理生成gitconfig 文件。所以“git config --list”命令只会从其他两个文件中读取信息。

  4. 通过代理设置“git config --global”后,配置将被保留。这意味着可以触发管道的任何其他用户都可以使用“git config --list”命令来读取您的用户信息。这可能会给您的用户信息带来风险。因此,它建议您在管道的最后一步撤消 git 配置更改