Git 在WSL上使用SSH将代码推送到Azure DevOps失败

Git 在WSL上使用SSH将代码推送到Azure DevOps失败,git,ssh,azure-devops,windows-subsystem-for-linux,Git,Ssh,Azure Devops,Windows Subsystem For Linux,我在Windows10和Ubuntu上使用WSL2。我已成功设置SSH,即IT部门已为端口22定义了防火墙规则。然而,如果我将代码推送到一个空的DevOps回购协议,我会遇到问题 git push --set-upstream origin master 它询问我的密码 Password for 'https://organisationname@dev.azure.com' 但是,当定义SSH时,它不应该要求我输入密码(我甚至不知道)。我在本地也做了第一次提交,所以肯定有代码要推送。似乎它

我在Windows10和Ubuntu上使用WSL2。我已成功设置SSH,即IT部门已为端口22定义了防火墙规则。然而,如果我将代码推送到一个空的DevOps回购协议,我会遇到问题

git push --set-upstream origin master
它询问我的密码

Password for 'https://organisationname@dev.azure.com'
但是,当定义SSH时,它不应该要求我输入密码(我甚至不知道)。我在本地也做了第一次提交,所以肯定有代码要推送。似乎它不会将我的SSH密钥用于push命令。因此,克隆另一个远程回购协议是成功的:

git clone git@ssh.dev.azure.com:v3/COMPANY-IT/COMPANY%20IT/COMPANY%20IT
因此,我尝试输入本地代码(同时清空了远程回购协议)

但结果是

error: src refspec git@ssh.dev.azure.com does not match any
如何将代码推送到远程回购?为什么我需要为clone命令指定ssh部分?以前已使用定义了原点

git remote add origin ...

在您的情况下,看起来远程设备当前是HTTPS远程设备。要将其更改为新的SSH远程,可以编写以下内容:

$ git remote set-url origin git@ssh.dev.azure.com:v3/COMPANY-IT/COMPANY%20IT/COMPANY%20IT

这将使您的正常操作成功。

问题是我的帐户没有足够的权限。在管理员更改它们之后

git push -u origin --all
他立即开始工作。此命令返回可能缺少访问权限的提示。我发现我的一个命令中也漏掉了分支

git push --set-upstream master

正确

-设置上游
的目的是设置远程名称,而不是完整的URL-这是抱怨,因为您指定的是URL而不是上游的ref。请您运行
git remote show origin
并将结果包含在您的问题中,以便我们了解它是如何设置的?(显然,删除任何特定于客户的数据)
git push --set-upstream master