我有一个在存储服务器上运行的git存储库。通过http
克隆存储库工作正常
git clone http://user@server:7990/a/b/sandbox.git
出于某种奇怪的原因,当我用ssh
切换http
并用它切换端口时,它给了我
git clone ssh://user@server:7999/a/b/sandbox.git
Cloning into sandbox...
fatal: remote error: Remote URL invalid
A repository could not be determined from the remote URL. Please confirm the
clone URL in Stash and try again. URL suffix: '/scm/ct/sandbox.git'
fatal: The remote end hung up unexpectedly
服务器已启用ssh
,端口设置为 7999
。为什么当请求通过ssh
而不是http
发送时找不到存储库?
问题解决了。出于某种原因,存储库的 SSH-URL-后缀与 HTTP-URL-后缀不同。发现后,它奏效了。
编辑:
给我的http-url存储是user@server:7990/a/b/sandbox.git
,而ssh-url存储给我的是user@server:7999/b/sandbox.git
(其中a和b当然是占位符)。
正如评论中提到的,我应该在我的答案中加上这一点。
配置 ssh 为你做这件事
除非需要显式写出克隆 url(例如,克隆由参数化脚本执行),否则通常更容易配置 ssh,以便它理解server
的含义,因此命令参数只是您通常期望的默认值。因此,例如在您的 ssh 配置文件中放入:
Host server
User user
Port 7999
然后允许:
$ git clone server:/a/b/sandbox.git
这样,特别是如果 git 服务器上有多个存储库,这意味着您无需记住更复杂/明确的语法即可克隆存储库。