2011-09-07 116 views
11

克隆由gitolite一个管理的仓库通常采用以下语法gitolite使用非默认端口

git clone [email protected]:repository 

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

git clone [email protected]:22:repository 

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

+0

[git remote add with other ssh port]可能重复(http://stackoverflow.com/questions/3596260/git-remote-add-with-other-ssh-port) –

回答

17

“SCP style”Git URL语法([email protected]:path)不支持包含端口。要包含端口,您必须使用ssh://“Git URL”。例如:

ssh://[email protected]:2222/repository 

注:相比于[email protected]:repository,这提出了一个稍微不同的存储库路径到远端(绝对/repository代替相对路径repository); Gitolite接受这两种类型的路径,其他系统可能会有所不同。


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

Host gitolite 
    User  gitolite 
    HostName server 
    Port  2222 

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


如果你有记录(和或配置)这多个人,我会ssh://网址去,因为不涉及额外的配置。

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

2

它在这里非常详细的解释:https://github.com/sitaramc/gitolite/blob/pu/doc/ssh-troubleshooting.mkd#_appendix_4_host_aliases

使用在〜/ .ssh /配置“主机”对让你很好地封装了所有这一切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克隆gitolite:reponame事情会起作用。