嗨,我已经成功地用SSH设置了Git/Github。我知道这一点,因为我通过 Github 帮助指南来检查这一点,所有结果都通过了。
对于标记示例,我可以使用以下命令推送到我的 Github 存储库:
git push origin <tagname>
但是,当我尝试做同样的事情但通过 url 指定远程时,它失败了,告诉我存储库不存在:
git push git@github.com:<organisationname>/<reporname>.git <tagname>
我收到以下错误:
错误:找不到存储库。致命:无法从远程读取 存储 库。
请确保您具有正确的访问权限和存储库 存在。
git push 的文档确实支持这两种语法,所以我对为什么 URL 版本失败而"origin"版本没有感到困惑?
我发现了这个问题,它实际上很简单。为发布插件配置的用户与配置为访问存储库的用户不同。在我的问题中,我有一个示例,包括"git"作为用户,它实际上并不代表 maven 插件使用的 URL,它使用的是不同的用户。
因此,为了清楚起见,如果 ssh 访问基于"user1"并且 maven 发布插件配置为使用"user2"运行,那么这就是我收到失败推送的时候。
为了以用户模棱两可的方式处理这个问题,git 文档建议始终使用"git"用户推送。
例如,即使为"user1"设置了 ssh 密钥,在我的设置中,以下推送仍然成功:
git push git@github.com:<organisationname>/<reporname>.git <tagname>
但以下不是:
git push user2@github.com:<organisationname>/<reporname>.git <tagname>
现在我知道原因了,很明显,并且感觉很愚蠢,我最初在我的配置中错过了这一点。这也解释了为什么如果使用正确的 ssh 密钥在任何存储库设置上运行原始问题,正如注释所暗示的那样,可以正常工作。