Git出现致命错误,无法读取用户名。

30

我已经纠结了几天了。 我无法从特定的计算机连接到我的Git项目(存储在VisualStudio.com中)(它在我的第二台电脑上可以正常工作)。 每当我尝试同步或克隆我的存储库时,VS2017会要求我的用户凭据(两次),然后我会收到以下错误:

Error: cannot spawn askpass: No such file or directory Error encountered while cloning the remote repository: Git failed with a fatal error. could not read Username for 'https://.visualstudio.com': terminal prompts disabled

我不记得我是否更改了任何可能引起这种情况的内容。


刚刚遇到了这个问题。在我这种情况下,昨天我能够正常访问,但今天却无法访问。我修改了我的.gitconfig文件以使用SSH,然后得到提示,没有连接就关闭了它,将我的.gitconfig文件恢复到原来的状态并重试。然后它又可以正常运作了。 - sr28
13个回答

32

这主要是由于凭据已被 Credential Manager 记住所致。您应该删除已存储在 Credential Manager 中的 xxx.visualstudio.com 凭据。

例如,如果计算机的操作系统是 Windows,则可以打开凭据管理器 -> Windows 凭据 -> 通用凭据 -> 删除类似 git:https://xxx.visualstudio.com 的凭据。

enter image description here

然后再次克隆,Git 将让您输入存取 VSTS 帐户的用户名(电子邮件地址)和密码。输入后,应能够成功克隆仓库。


1
我按照步骤操作,但是没有成功。我正在使用VS2017并尝试连接到VSTS git项目。我遇到了以下错误: 在推送到远程仓库时遇到错误:Git出现致命错误。 遇到Win32Exception。 写入凭据失败 无法生成askpass:没有这样的文件或目录 无法读取“https://xxxxxx.visualstudio.com”的用户名:终端提示已禁用 正在推送到https://xxxxxx.visualstudio.com/_git/StockTrace - Anuranjan Srivastav
在使用TFS构建时,它对我不起作用。假设子模块是使用FQDN配置的(即https://subdomain.domain.com/tfs/DefaultCollection/Project/_git/Repository2)。当TFS构建克隆git存储库时,它仅使用子域(https://subdomain/tfs/DefaultCollection/Project/_git/Repository1)。我不知道为什么在克隆期间只使用子域。FYI,我已经配置了TFS服务器公共URL以使用FQDN。我已经尝试多次清除通用凭据,但仍然没有运气。我也可以通过使用相同的方式重现此问题。 - iroel
1
我在使用VS打开时更改了我的密码,但Git出现了身份验证错误。我在凭据管理器中删除了我的2个git凭据,并在同步时VS提示输入用户名/密码。问题解决了。 - J. Horn
这个与@Matstar的答案结合起来解决了问题。需要同时执行两个步骤(删除tenant.cache和manager中的凭证)。 - BobbyTables
另外,我第一次运行 Visual Studio 时必须以管理员身份运行才能正确同步仓库。 - Gruss
显示剩余2条评论

19

我没有在Windows凭据中注册任何git凭据,但即使在VS用户对话框弹出窗口中选择了我的Windows用户帐户,我仍然收到了这个错误。

经过一天的尝试不同的方法,如重新安装GIT for Windows,我设法通过删除此文件来解决这个问题:“C:\Users(profile)\AppData\Local\GitCredentialManager\tenant.cache”。

下一次重试时,GIT条目将显示在我的Windows凭据通用列表中。 查看问题


我尝试了这个,但对我没有用。我不得不获取最新的git-credential-manager.exe并将其放入VS2017 git-core文件夹中。 - MikeZ
我更新了凭据管理器,但它并没有解决我的问题,不过很高兴看到它对你有用。 - Matstar
今天我们将DevOps账户连接到AAD。之后我们无法再克隆我们的仓库。您的答案是解决这个问题的方法。非常感谢。 - zgue
从凭据管理器中删除所有存储的 Git 凭据并删除 tenant.cache 文件对我有用。谢谢! - purplesoft

6

只需将您的Visual Studio更新到最新版本。此错误已在最新更新中报告并修复。这对我有效。


如果您没有管理员权限,则可能无法实现此操作;git remote set-url origin username:password@github.com/username/repo.git - 这对我有效。注意:这将以明文形式存储您的 GitHub 密码在 ./git/config 中。 - Stefan Steiger
我使用的是最新版本的VS,但这个问题仍然存在。 - user2847376
我正在使用一个在你提出建议后更新了9个月的VS2017版本...问题仍然存在。 - Mike Gledhill
似乎是VS的问题,我在VS2017中尝试过但不起作用,然后看到这个说“嘿,让我在安装了的VS2019上试试”,结果它运行成功了(或许对某些人有用)。 - solujic

4

我有类似的问题。

在VS2017中进行推送操作时失败,出现错误"spawning git-askpass.exe"。

我通过将VS2017 git-core文件夹中的所有文件复制/替换为Git安装创建的git-core文件夹中的文件来解决了这个问题。

也许我只需要新的git-credential-manager.exe文件,但我还是做了全部替换。

到目前为止,没有出现任何问题。

VS2017文件夹路径: C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer\Git\mingw32\libexec\git-core

Git安装文件夹路径: C:\Program Files\Git\mingw64\libexec\git-core


这对我有用,我在使用VS 2017 Community 15.8.1时遇到了同样的问题。非常感谢! - Ricardo Zambon
对我也起作用了。谢谢!仅替换git-credential-manager.exe并没有起作用。 - Preet

3

经过长时间的折磨,我终于解决了这个问题(在此期间,我尝试了包括从凭据管理器中删除帐户在内的所有方法)。

我启动了Visual Studio 2017,然后打开了我的存储库,接下来进入了存储库的团队资源管理器标签。

我左键单击同步选项,然后再次单击同步链接按钮以启动拉取/推送操作。 这导致Visual Studio显示一个对话框,要求我选择我的凭据。

然而,我解决这个问题的方法是首先“忘记”我想使用的帐户(左键单击右侧的3点图标),然后再提示我输入用户名和密码-输入正确的用户名和密码就可以很好地进行同步!


2
清除凭证删除tenant.cache的组合在过去对我起过作用-我能够强制重新连接到我的*.visualstudio.com git仓库,并完全从VS2017内部解决问题。然而,在今天使用新的VS2019安装时需要做更多的工作。在我的情况下,关键是错误信息中的“终端提示禁用”部分(类似于Anuranjan Srivastav对已接受答案的评论)。 使用命令行工具(清除凭据后)进行简单的“git fetch”这次为我解决了问题-提示输入凭据并且一切正常。

2

我遇到了类似的问题。

我通过以下步骤解决了它:

  1. 从Git Bash连接到您的远程Azure DevOps存储库。
  2. 尝试使用Git命令同步/克隆/拉取/推送存储库。
  3. Git凭据管理器会要求用户提供凭据(在我的情况下要求两次)。提供详细信息。
  4. 它将要求输入用户名和密码凭据 Username and Password
  5. 可以从此处生成此用户名和密码(克隆->生成GIT凭据): Generate GIT Credentials
  6. 从Visual Studio尝试Git操作。(应该可以工作)

请注意,每次执行任何Git操作(pull/push/fetch/clone等)时,它都会要求输入用户名密码。

我通过以下方式解决了它:

运行

git config --global credential.helper store

然后运行

git pull

提供用户名和密码。这些详细信息将被记住。

2
在我的情况下,这发生在我的VS 2019许可证过期时。我联系了帮助台,他们给了一个新的许可证,然后我激活了它,当我尝试使用VS 2019获取时,问题就开始了。当我在VS 2019中进行提取时,我收到以下错误消息。
“Git失败,致命错误。无法读取'https://xxx.visualstudio.com'的用户名:终端提示已禁用。”
以下是我所做的步骤:
1)我去凭据管理器并删除了https://xxx.visualstudio.com的条目。
2)安装了Windows版GIT凭据管理器。 https://github.com/Microsoft/Git-Credential-Manager-for-Windows/releases 3)打开命令提示符并进入我的本地工作目录。
4)输入命令git fetch并按回车键,我得到了一些消息,说Fetch成功了。
重新打开VS 2019,进行了Fetch操作,现在它可以正常工作。我还测试了Pull、Push等操作,一切都正常。

0

我曾经遇到过同样的问题,尝试了很多方法都没有解决,最后通过以下步骤解决:

1)进入源代码位置 ===> .git 文件夹 ==>config 文件 ==>打开它。

2)进入 [remote "origin"] url ="dev.azure.com/xxxx/_git/yyyy" 复制该 URL。

3)在新的浏览器中打开该复制的 URL(建议使用隐身模式)。

4)它会要求登录,只需使用您的提交凭据进行登录。登录并转到文件,然后单击克隆按钮。如下图所示: enter image description here

5)不需要对该 URL 进行任何修改,您可能会惊讶地发现您的用户名不在前缀中,但不用担心,请使用该用户名进行复制。

6)将该 URL 粘贴到第 2 步的位置。

7)我还删除了 C:\Users(profile)\AppData\Local\GitCredentialManager\tenant.cache 文件(稍后添加),这对我至少有效。

附注:有人知道为什么该 URL 的前缀是网站创建的用户名而不是我的用户名吗?


0

将git更新到最新版本并在管理员命令窗口中运行对我有所帮助


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接