目录
前言
Visual Studio在2019版本中正式加入了对Git的支持。但如果未进行过相关的环境配置,在VS中使用内置Git将无法与SSH仓库同步。尤其是习惯于使用其它终端(如Powershell、Git Bash等)的用户而言,这个看起来便捷的系统反而徒增烦恼。本文记录了我在查阅国内外无数资料,踩坑无数后的解决方案。希望给简中互联网带来我的解决方案。
环境
Windows_NT 10.0.22000
Powershell v7.2.6
Visual Studio 2022 v17.3.3
独立安装Git for Windows
在Windows设置App中安装的SSH客户端
解决方案
步骤
- 在系统环境变量中添加
GIT_SSH
变量,指向系统自带的SSH客户端C:\Windows\System32\OpenSSH\ssh.exe
。若仍会报错,尝试将System32更改为SysNative
。 - 若系统环境变量中的路径为SysNative,则需在终端的配置文件中(以Powershell为例)添加
$env:GIT_SSH = "C:\Windows\System32\OpenSSH\ssh.exe"
行,将Git使用的SSH地址指回真实目录。
原理
VS调用的git.exe
是随其安装的Git而不是用户独立安装的Git,因此VS无法使用已在终端配置好的SSH密钥。在环境变量中添加GIT_SSH则强行指定,无论git的安装位置,统一使用系统的SSH客户端。此时VS便能正确使用之前在终端配置好的SSH密钥。
在一些尚不明确的机制下,VS有时会将 System32
解析为 SysWOW64
。此时使用SysNative,便可强制指定VS使用真实System32内的OpenSSH。但这样一来,所有终端便无法正确调用SSH。因此还需在终端的配置文件中,将GIT_SSH的路径指回真实地址。