11

要克隆由 gitolite 管理的存储库,通常使用以下语法

git clone gitolite@server:repository

这告诉 SSH 客户端使用gitolite作为用户名连接到服务器的 22 端口。当我尝试使用端口号时:

git clone gitolite@server:22:repository

Git 抱怨存储库22:repository不可用。如果 SSH 服务器使用不同的端口,应该使用什么语法?

4

2 回答 2

18

“SCP 风格”Git URL 语法 ( user@server:path) 不支持包含端口。要包含端口,您必须使用ssh://“Git URL”。例如:

ssh://gitolite@server:2222/repository

注意:与 相比gitolite@server:repository,这表示到远程端的存储库路径略有不同(绝对/repository路径而不是相对路径repository);Gitolite 接受这两种类型的路径,其他系统可能会有所不同。


另一种方法是使用Host您的条目~/.ssh/config(请参阅您的ssh_config(5)手册页)。通过这样的条目,您可以创建一个“SSH 主机昵称”,其中包含服务器名称/地址、远程用户名和非默认端口号(以及您可能喜欢的任何其他 SSH 选项):

Host gitolite
    User     gitolite
    HostName server
    Port     2222

然后你可以使用非常简单的 Git URL,比如gitolite:repository.


如果您必须为多人记录(和/或配置)这个,我会使用ssh://URL,因为不涉及额外的配置。

如果这仅适合您(特别是如果您最终可能会从同一服务器访问多个存储库),那么使用 SSH 主机昵称来节省一些输入可能会很好。

于 2011-09-08T05:21:49.957 回答
2

这里有详细解释:https ://github.com/sitaramc/gitolite/blob/pu/doc/ssh-troubleshooting.mkd#_appendix_4_host_aliases

在 ~/.ssh/config 中使用“主机”参数可以让您很好地将所有这些封装在 ssh 中,并给它一个简短、易于记忆的名称。例子:

host gitolite
    user git
    hostname a.long.server.name.or.annoying.IP.address
    port 22
    identityfile ~/.ssh/id_rsa

现在您可以简单地使用一个词 gitolite(这是我们在这里定义的主机别名),ssh 将推断出它下定义的所有这些细节——只需说 ssh gitolite 和 git clone gitolite:reponame 就可以了。

于 2011-10-06T20:14:23.757 回答