为什么使用命令行时TFS和GIT不能正常工作?

34

我希望能够使用git命令行工具与Microsoft Team Foundation Server Git存储库一起使用。

但每次我想要访问远程仓库时,身份验证都会失败。当然,我正在使用Active Directory(这是TFS服务器)。Git存储库管理在Visual Studio中可以完美运行。(包括push、同步、克隆等)。

Cloning into 'blabla'
fatal: Authentication failed for 'http://server:8080/tfs/BlaCollection/_git/blabla/'

我曾经尝试过使用这些模式,但总是失败。

  • DOMAIN\用户名
  • 用户名@domainforest

有人能够使用命令行工具连接到TFS和git服务器吗? 在我的公司,我们使用令牌登录Windows系统,可能是原因吗?


你使用的 Git 版本是什么?你能安装最新的 Git 然后再试一次吗? - Eddie Chen - MSFT
我已经测试过最新版本:2.9.0-windows1。但是结果还是一样的。 - Jairo Andres Velasco Romero
安装GCM,然后再试一次:https://github.com/Microsoft/Git-Credential-Manager-for-Windows - Eddie Chen - MSFT
12个回答

42

Windows凭据 -> 通用凭据

然后在链接前面添加"git:"来添加一个新项目,例如:

git:http://Example.com

将 domain\user 添加为用户,并输入密码


3
这对我解决了问题。 - lacoder
这确实帮助了我在Windows 10中。 - Core
仅添加“Example.com”而不添加前缀也可行。 - Eugene

22

我做了两件事让它正常工作。请尝试以下操作。

  1. 将你的git更新到最新版本。
  2. 通过在 Windows 搜索中键入相同内容来打开Windows凭据管理器,并删除下面所示泛型凭据中的git凭据。 输入图像描述

1
这个方法可行!在Windows 10上使用TFS + Git时,这个方法可行!谢谢! - TJBlackman
我已经修改了密码并且它正常运行。谢谢! - Dirk

16

最终一个同事找到了解决方案,我将在这里发布它:

使用以下命令:

git config --global credential.http://[tfs_server].integrated true
当然,将[tfs_server]替换为你自己的TFS服务器主机名。
当凭据管理器要求凭据时,只需留空并按OK。(这样身份验证将使用Kerberos进行)
在此处查看更多信息:https://github.com/Microsoft/Git-Credential-Manager-for-Windows#q-i-thought-microsoft-was-maintaining-this-why-does-the-gcm-not-work-as-expected-with-tfs

我尝试按照您的提示操作,但没有成功。每次我启动克隆时都会出现以下错误: Cloning into 'BETR_WP%20Route'... Fatal: java.lang.IllegalArgumentException encountered. Details: tokenSecretStore can't be null Fatal: java.lang.IllegalArgumentException encountered. Details: tokenSecretStore can't be null Username for 'http://tfsapp1:8080': - cwhisperer
谢谢!对我来说没问题。这个很有趣但不必要!“当凭据管理器要求凭据时,请将空白处留空并按OK。” - Ömür Alçin

3

对于我自己,我打开了控制面板 > 凭据管理器 > Windows 凭据。

我试图只删除以 git: 开头的通用凭据,但是 git 命令仍然无法工作。

在我删除了 TFS 服务器的 Windows 凭据后,git 命令开始工作了。


2
无论您的公司以何种方式登录Windows,您只需要用于登录TFS的帐户。 您可以在Windows控制面板-凭据管理器中找到帐户信息。

这是我做到的。 我只是按照上述说明打开了Windows凭据管理器并编辑了凭据,因为它有些卡在了我的旧密码上。 由PatrickLu-MSFT提供

2

我的解决方案

打开控制面板 > 凭据管理器 > Windows 凭据。

在通用凭据下 -> 添加通用凭据

网络地址:git:https://tfs.[google].com

管理员:

密码:

将 google 替换为公司的域名。输入您的 EID 或凭据以登录 TFS。


1
如果您在更改TFS密码后遇到此错误,请执行以下操作:
前往“控制面板\用户帐户\凭据管理器”
在Windows凭据下,修改特定Internet或网络地址的密码。

1

你最近更改过AD密码吗?

  • 如果是这样,或者不是lol,转到控制面板>用户帐户>凭据管理器>Windows凭据。
  • 查找以git:http...开头的条目
  • 删除那个/那些条目,或将密码编辑为新密码。单击向下箭头,您会看到有关该条目的信息,包括删除/编辑链接

1

我之前在SourceTree中遇到过这个问题,并使用以下解决方案解决了它。

在Windows中

  • 打开控制面板>凭据管理器>Windows凭据。

或者只需在Windows搜索中搜索Windows凭据

在通用凭据下 -> 添加通用凭据

并填写以下数据

将test替换为您公司的域。输入您的EID或凭据以登录TFS。

然后在SourceTree中

  • 从工具>选项>Git>禁用SSL证书验证

0
对我而言,问题出在代理设置上。运行>git config --global --unset http.proxy 后问题得到解决。我是在运行 Windows Server 2016 虚拟机和使用 Kerberos (Windows 认证) 的 TFS 2015 上遇到此问题的。

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