Visual Studio 2017/2019/2022 git sync/pull/push/fetch 操作卡住,无法停止

Visual Studio 2017/2019/2022 git sync/pull/push/fetch operation stuck, and cannot be stopped

我从 Visual Studio 中的 'Git Changes' 选项卡启动同步、获取、拉取或推送,但操作只是挂起,没有停止它的选项。我必须点击 'X' 才能关闭 Visual Studio。

如果操作是同步操作,它会在其他所有内容上打开一个模式对话框,因此挂起情况会更糟,我必须从任务管理器中强制退出 Visual Studio。

这适用于具有 git 集成的 Visual Studio 的所有版本(我最近在 VS 2019 和 VS 2022 预览中看到它,但之前在 VS 2017 中看到过)。在新机器上设置 VS 后经常发生。

也可能有其他原因,但对我来说,这是因为我使用 PuTTY 的 Pageant 程序进行集成 git 身份验证(即我用我的私钥启动 pageant.exe,并且我已将 GIT_SSH=C:\Program Files\PuTTY\plink.exe 添加到我的环境变量中,以便 Visual Studio、Git for Windows 等可以使用它来进行身份验证。

如果您之前没有使用 PuTTY 的任何程序访问过存储库的 git 服务器,就会出现问题。即使 Pageant 是使用有效密钥启动的,第一次访问服务器时,您仍然需要将服务器的密钥添加到 PuTTY 的存储中。

要修复它,只需从命令行访问服务器一次,例如putty git@bitbucket.orgputty git@github.com(这取决于远程是什么,如git remote -v所示),然后弹出 PuTTY 安全警报 window,您需要单击接受服务器证书。

这样做一次后,它将与 PuTTY 的 pageant/plink 集成一起正常工作,包括 Visual Studio.