Visual Studio 2019+捆绑Git-如果独立Git安装成功,SChannel加密提供程序将失败



背景

我们的组织通过在域控制器上使用组策略来分发内部证书。对于我们的git安装,这意味着我们需要使用"Windows安全通道"库进行HTTPS连接,而不是OpenSSL。


问题

尝试使用带有schannel的VS2019 Enterprise捆绑Git连接到远程Git存储库失败,错误为:

schannel: next InitializeSecurityContext failed: Unknown error (0x80092013) - The revocation function was unable to check revocation because the revocation server was offline

当我使用VS2019 UI尝试与repo同步时,以及当我通过命令行运行它时,都会出现此错误。(我使用的可执行文件的路径是C:Program Files (x86)Microsoft Visual Studio2019EnterpriseCommon7IDECommonExtensionsMicrosoftTeamFoundationTeam ExplorerGitcmdgit.exe(

但是,如果我运行与VS2017捆绑的git可执行文件,我可以成功地与repo同步(可执行文件路径:C:Program Files (x86)Microsoft Visual Studio2017ProfessionalCommon7IDECommonExtensionsMicrosoftTeamFoundationTeam ExplorerGitcmdgit.exe(。然而,如果我打开VS2017并尝试使用UI,我会得到与上面相同的schannel错误!


摘要

执行git的独立安装并使用Windows安全通道进行设置成功连接到远程存储库。

无论是使用IDE UI还是通过命令行,VS2019捆绑的git都不起作用。

VS2017捆绑的git可以在命令行中工作,但不能通过IDE UI。


配置文件

我的global.gitconfig看起来是这样的:

[user]
name = xxx
email = xxx@xxx.com
[http]
sslBackend = schannel

VS2019.gitconfig看起来是这样的:

[core]
symlinks = false
autocrlf = true
[color]
diff = auto
status = auto
branch = auto
interactive = true
[pack]
packSizeLimit = 2g
[help]
format = html
[diff "astextplain"]
textconv = astextplain
[rebase]
autosquash = true
[filter "lfs"]
clean = git-lfs clean -- %f
smudge = git-lfs smudge -- %f
process = git-lfs filter-process
required = true
[include]
; include Git for Windows' system config in order
; to inherit settings like `core.autocrlf`
path = C:/Program Files (x86)/Git/etc/gitconfig
path = C:/Program Files/Git/etc/gitconfig

VS2017.gitconfig看起来是这样的(与VS2019完全相同(:

[core]
symlinks = false
autocrlf = true
[color]
diff = auto
status = auto
branch = auto
interactive = true
[pack]
packSizeLimit = 2g
[help]
format = html
[diff "astextplain"]
textconv = astextplain
[rebase]
autosquash = true
[filter "lfs"]
clean = git-lfs clean -- %f
smudge = git-lfs smudge -- %f
process = git-lfs filter-process
required = true
[include]
; include Git for Windows' system config in order
; to inherit settings like `core.autocrlf`
path = C:/Program Files (x86)/Git/etc/gitconfig
path = C:/Program Files/Git/etc/gitconfig

您可以尝试以下步骤:

  1. 删除文件夹(如果需要恢复,可以备份此文件夹(:C:Program Files (x86)Microsoft Visual Studio2019xxxCommon7IDECommonExtensionsMicrosoftTeamFoundationTeam ExplorerGit

  2. 请确保您的系统上没有安装Git版本。一旦你有了Git,就在Control Panel / Uninstall a program中卸载它们。

  3. 下载最新版本的Git并安装它。

  4. 在Git shell中运行此命令以禁用吊销检查:

    $ git config --global http.schannelCheckRevoke false

    注意:

    从这个链接:

    我们不建议为普通Git设置此配置值用法这是一个"逃生舱口",用于以下情况网络管理员已限制SChannel的正常使用Git正在尝试使用的Windows上的API。

最新更新