我的
gitlab
位于主机服务器上的虚拟机上。我使用非标准 SSH 端口(即 766
)到达虚拟机,然后 iptable 规则从 host:766
转发到 vm:22
。
因此,当我创建新的存储库时,添加远程的指令提供了格式错误的 URL(因为它不使用
766
端口。例如,Web 界面给了我这个:
git 远程添加源[电子邮件受保护]:group/project.git
而不是在组之前包含
:766/
的 URL。
git 远程添加源 [电子邮件受保护]:766/group/project.git
所以当我创建一个存储库时,我必须手动进行修改,对于我的协作者也是如此。 我该如何解决这个问题?
在 Omnibus 打包版本中,您可以在
/etc/gitlab/gitlab.rb
文件中修改该属性:
gitlab_rails['gitlab_shell_ssh_port'] = 766
然后,您需要重新配置 GitLab:
# gitlab-ctl reconfigure
您的 URI 将在 Web 界面中正确显示为
ssh://[email protected]:766/group/project.git
。
如果您在 config/gitlab.yml 中正确配置了 ssh_port,网页将显示正确的 repo url。
## GitLab Shell settings
gitlab_shell:
...
# If you use non-standard ssh port you need to specify it
ssh_port: 766
ps。 正确的网址是: ssh://[电子邮件受保护]:766/group/project.git
编辑:更改后您需要清除缓存等:
bundle exec rake cache:clear assets:clean assets:precompile RAILS_ENV=production
注意:这是在旧的 Giltab 版本(
v5
-v6
)上测试的,可能不适合现代实例。
您可以通过两步过程实现类似的行为:
config/gitlab.yml
在服务器上,将端口设置为您使用的端口:
ssh_port: 766
~/.ssh/config
在您的计算机上,添加与您的 gitlab 相对应的以下部分:
Host sub.domain.com
Port 766
您需要在每个用户的计算机上重复此操作...
解决此问题的简单方法:
ssh://git@my-server:4837/~/test.git
git clone -v ssh://git@my-server:4837/~/test.git
当存储库是某个组的一部分时,默认 URL 就会变得混乱。您可以使用
测试Git连接ssh -T -p <local-port> git@localhost
并使用
克隆存储库git clone ssh://git@localhost:<local-port>/<gitlab-group>/<gitlab-project>.git
例如,如果 GitLab 上的 SSH 正在侦听端口 2222,并且本地端口转发位于端口 62222,例如:
LocalForward 62222 localhost:2222
您可以使用以下方式测试连接:
ssh -T -p 62222 git@localhost
如果您有一个名为
my-group
的组和名为 my-project
的项目,您可以使用 克隆存储库
并使用
克隆存储库git clone ssh://git@localhost:62222/my-group/my-project.git