我在需要使用 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
返回此配置,将配置设置回空字符串是否安全?
答案 0 :(得分:0)
您似乎已将自托管代理配置为作为服务运行,对吗?
您需要了解以下几点:
“git config --list
”命令正在读取来自三个不同位置的信息(更多详细信息,请参阅 here)。
[path]/etc/gitconfig
文件。~/.gitconfig
或 ~/.config/git/config
文件。.git/config
)中的配置文件。您通过“user.name
”设置的用户信息(user.email
、git config --global
) /strong>' 命令存储在 '~/.gitconfig
' 或 '~/.config/git/config
' 文件中。根据这个文件的介绍,它存储了特定于您个人的值。
任何登录计算机并设置“git config --global
”的用户都会在计算机系统上生成这个gitconfig
文件(例如,Windows 计算机上的“C:/Users/{username}/.gitconfig
”)。每个用户只能访问自己的gitconfig
文件。
如果将自托管代理配置为作为服务运行,则该代理是系统上的网络服务。它也有自己的 gitconfig
文件(例如 Windows 计算机上的“C:/WINDOWS/ServiceProfiles/NetworkService/.gitconfig
”)。代理也只能访问自己的 gitconfig
文件。
由于您尚未通过代理设置“git config --global
”,因此没有为代理生成gitconfig
文件。所以“git config --list
”命令只会从其他两个文件中读取信息。
通过代理设置“git config --global
”后,配置将被保留。这意味着可以触发管道的任何其他用户都可以使用“git config --list
”命令来读取您的用户信息。这可能会给您的用户信息带来风险。因此,它建议您在管道的最后一步撤消 git 配置更改。