【问题标题】:Using multiple accounts to access Azure Devops Git repo from Visual Studio使用多个帐户从 Visual Studio 访问 Azure Devops Git 存储库
【发布时间】:2020-05-04 15:12:14
【问题描述】:

在 Visual Studio 2019 中尝试从 Azure Devops 克隆存储库时出现此错误:

TF401019: The Git repository with name or identifier X does not exist or you do not have permissions for the operation you are attempting.
Error encountered while cloning the remote repository: Git failed with a fatal error.

我正在使用两个帐户:

  • user@domain.com
  • user@seconddomain.com

user@domain.com 是我在 Visual Studio 中的主要帐户,它可以访问我的仓库,但没有权限。 user@seconddomain.com 是 Visual Studio 中的另一个帐户设置,它可以完全访问我的仓库。

当我尝试克隆 repo 时,我得到了上面的错误。在 Azure Devops 中,我注意到个人访问令牌是在我的第一个帐户中创建的,而不是在我的第二个帐户中,因此我假设它正在尝试连接错误的帐户。即使我从 Windows 凭据管理器中删除凭据并从 IE 和 Edge 清除缓存,我也从未收到 Visual Studio 的凭据要求。

有没有办法指定在 Visual Studio 2019 中克隆 Azure Devops 存储库的帐户?

----更新

克隆时,我使用 Visual Studio 中的帐户 #2 登录并在 dev.azure.com 下列出存储库

但我收到此错误:

Remote: TF401019: The Git repository with name or identifier X does not exist or you do not have permissions for the operation you are attempting.
Error encountered while cloning the remote repository: Git failed with a fatal error.
repository 'https://dev.azure.com/X' not found

然后,在 Azure Devops 中,使用帐户 #1 创建 PAT

PAT 存储在 Windows 凭据管理器中(我每次尝试都会删除它)

【问题讨论】:

  • 这个问题有什么更新吗?你解决了这个问题吗?如果没有,请告诉我有关此问题的最新信息吗?

标签: git visual-studio azure-devops git-credential-manager


【解决方案1】:

有没有办法指定在 Visual Studio 2019 中克隆 Azure Devops 存储库的帐户?

抱歉给您带来不便。

这种行为是设计的。我们无法在 Visual Studio 中指定另一个帐户来克隆 Azure Devops 存储库。

当我们从 Visual Studio 连接 repo 时,它会提示输入登录帐户,而不是输入身份验证信息:

如果我们想指定另一个帐户来克隆 repo,我们需要在 Visual Studio 中再保留两个凭据。当我们在同步VS与Azure devops的过程中,VS无法智能选择使用哪个证书进行身份验证,否则每次同步代码都必须手动选择证书

另一方面,我们不能在登录帐户中指定另一个帐户,这可能涉及溢出问题(低权限帐户使用高权限帐户)。

这就是为什么 Visual Studio 允许我们使用登录帐户作为身份验证。

如果您想使用其他帐户从 repo 克隆代码,您可以尝试使用命令行和PAT,例如:

git clone https://<PAT>@dev.azure.com/<OrganizationName>/YourProject/_git/..

不需要用户名或密码,因为 PAT 就足够了。

希望这会有所帮助。

【讨论】:

  • 感谢您的回答,URL 中的 PAT 方法确实有效,因此这是一个很好的解决方法。至于“连接到项目”窗口,我使用正确的帐户登录,它列出了正确的存储库,但是当我尝试克隆时,它使用错误的帐户进行克隆。这是你描述的行为吗?
  • @Phil-R,这不应该是预期的行为,你怎么知道它是用错误的帐户克隆的?请您打开一个新线程,其中包含有关此新问题的一些详细信息和图像?顺便说一句,如果上面的答案解决了您最初的问题,您可以接受它作为答案,这样它可以帮助遇到同样问题的其他社区成员,我们可以存档这个帖子,谢谢。
  • 我知道它使用错误的帐户进行克隆,因为正如我在帖子中所述,我在 Visual Studio 中遇到错误,并且每次克隆时都会在错误的帐户下创建 PAT。我将用屏幕截图更新帖子以进一步详细说明。
  • @Phil-R,对不起,我的回复晚了,我刚刚退出其他线程。根据您的回复,问题似乎来自 Visual Studio,如果您可以在命令行中使用 PAT 进行克隆。因此,我们可以尝试清理 Visual Studio 的缓存,例如以管理员身份在 VS 开发人员命令提示符中使用 devenv /resetuserdata 命令。或者从以下路径清除配置:`C:\users\\AppData\Roaming\Microsoft\VisualStudio\15.0_????\Team Explorer`,即使我们可以在其他PC上测试它。
【解决方案2】:

我假设是 Windows?
VS 可能会退回到错误的身份,我认为没有办法强制 VS 使用某个帐户而不是另一个帐户。我建议你从命令行克隆。 VS 有自己的 Git 客户端,因此它可以处理 git 凭据管理器之外的身份,如果在 Windows 凭据管理器中找不到凭据,它会要求提供凭据。

MS 支持会提出以下建议,但不确定它是否会起作用:

尝试退出并忘记您的帐户。删除缓存。 VS Identities 缓存在 windows 的以下路径中。

C:\Users\{user}\AppData\Local\.IdentityService
C:\Users\{user}\AppData\Local\Microsoft\Team Foundation\{each version}\Cache
C:\Users\{user}\AppData\Local\Microsoft\Team Foundation\{each version}\Cache
C:\Users\{user}\AppData\Local\Microsoft\VisualStudio Services\{each version}\Cache
C:\Users\{user}\AppData\Local\GitCredentialManager\tenant.cache

同时清理以 git:* 开头的 Windows 凭据管理器条目。

按照这些步骤操作后,如果您从命令行克隆,我希望 git 会要求您提供凭据。

【讨论】:

  • 谢谢,在我清理这些缓存后它确实会要求提供凭据,但即使我使用正确的帐户登录,克隆仍会为错误的帐户创建 PAT
猜你喜欢
  • 2022-11-15
  • 2023-01-23
  • 2019-07-13
  • 2021-04-30
  • 1970-01-01
  • 2020-05-09
  • 2022-08-19
  • 2019-12-13
  • 1970-01-01
相关资源
最近更新 更多