【问题标题】:Using Git with TFS 2017 - Works in Visual studio but not Command Line将 Git 与 TFS 2017 一起使用 - 在 Visual Studio 中工作,但在命令行中不工作
【发布时间】:2017-05-19 08:44:41
【问题描述】:

我们最近使用 Git 为我们的项目切换到 Team Foundation Server 2017。如果我们通过 Web 界面或通过 Visual Studio 使用我们的 TFS 运行良好,但如果我们尝试使用第三方工具,例如 Sourcetree、Git Extensions 甚至命令行,我们会得到一个fatal: Authentication failed for https://[path_to_repo]。 SSH 工作正常,但我们想使用 HTTPS,因为 Visual Studio 中尚不支持 SSH。

我已经从我的机器上卸载了 git,并按照此链接 https://www.visualstudio.com/en-us/docs/git/share-your-code-in-git-cmdline 提供的说明进行操作,这几乎只是说安装最新版本的 git 并确保启用 Git 凭据管理器(它是)。我注意到,从我的机器上卸载 git 后,Visual Studio 中的 git 仍然可以工作,这让我相信它正在使用自己的嵌入式 git 版本,就像 Sourcetree 一样。

我已尝试在我们的 TFS 网站上禁用 IIS 中的所有形式的身份验证,以便它只接受 Windows 身份验证并且唯一的提供者是 NTLM,并且扩展保护已关闭。

我们希望继续使用我们的第三方 git 工具和视觉工作室。 Visual Studio 确实添加了一些不错的功能,但我们仍然喜欢在其他工具中执行一些操作。

编辑:我在标题/帖子中输入了错误的版本。我们正在使用 TFS 2017。我很抱歉,我不知道我为什么会犯这个错误。

【问题讨论】:

  • 既然您使用的是 HTTPS,那么您是否为您的 TFS 2015 配置了 SSL?
  • 是的。我们有自己的 SSL 证书,最初我们确实遇到了 SSL 错误,直到我将证书添加到 git 安装文件夹中的 ca-bundles 文件中。

标签: git visual-studio tfs


【解决方案1】:

答案原来是客户端的配置错误。出于某种原因,即使我们在 git-install 期间选中了启用 git credential manager 的复选框,但我们的任何配置文件中都没有设置全局变量 credential.helper=wincred。设置该变量允许 git 提示我们并记住我们的凭据。

我不确定它是否相关,但 Git Credential Manager 独立安装程序在我们的机器上也会失败。它无法将任何文件复制到我们的 git 安装目录 (C:\Program Files\Git)。我必须启用 git 凭证管理器的日志记录才能看到它失败了,因为它似乎成功了。我将向 git 凭据管理器提出问题,看看他们是否可以解决此问题。

编辑:已在适用于 Windows 的 Git 凭据管理器中打开了一个关于 credential.helper 属性的错误。关于 Git 的另一个问题也被曝光了。

使用 GCM 的属性是 credential.helper=manager 而不是 wincred。但是,manager 在 Git v 2.11.0 中不起作用。 NTLM 身份验证似乎是一个已知问题,至少在 GCM 方面是这样,建议我尝试降级到 Git 版本 2.10.1。降级后,我可以将上述属性设置为 manager 并且它工作正常。

【讨论】:

    【解决方案2】:

    我尝试在 VS 中新建一个本地 Git 仓库,然后在 TFS 2015 中使用 git 命令行将其推送到一个空的 git 团队项目中,没有发生错误,您可以将您的步骤与我的步骤进行比较:

    【讨论】:

    • 您的 TFS 是否设置为使用 NTLM 身份验证?
    • 你不应该弄乱 IIS 中的设置,因为这会破坏 TFS。如果有,我建议您卸载并重新安装 TFS 2017。这不会影响您的数据。
    【解决方案3】:

    wincred 在带有 MinGW 更新的 Git 2.15.x/2.16(2018 年第一季度)中可能会更强大。

    参见commit 601e1e7commit 3c90bda(2017 年 10 月 30 日)Jakub Bereżański (``)
    (由 Junio C Hamano -- gitster -- 合并到 commit 55b5d92,2017 年 11 月 9 日)

    wincred: 正确处理空的用户名/密码

    空的(长度为 0)用户名和/或密码,当保存在 Windows 中时 凭据管理器,读取凭据时返回 null。

    此类空凭据的一个用例是 NTLM 身份验证,其中 空的用户名和密码指示 libcurl 使用 当前登录用户的凭据(单点登录)

    查找相关凭据时,将空用户名匹配为空。
    输出凭证时,正确处理空值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-09-09
      • 2020-06-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-01
      • 1970-01-01
      相关资源
      最近更新 更多