GitLab:无法将代码推送到服务器?

时间:2013-04-01 15:30:14

标签: git ssh gitlab

我在Ubuntu服务器上安装了GitLab。 一切似乎工作正常,除了我不能推/拉/克隆到服务器。

当我按下时,我收到一般错误消息:

fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

我已经尝试了几个小时的谷歌搜索,但我似乎找不到问题。

sudo -u git -H bundle exec rake gitlab:check RAILS_ENV=production

运行良好,全面确定!

我可以通过SSH连接到git@adress.adress 我明白了:

PTY allocation request failed on channel 0
Welcome to GitLab, Anonymous!

当我这样做时:

ssh git@adress.adress "ls /location/of/git/dir"

我明白了:

Not allowed command

网站正在运行,当我在网站上创建一个存储库时,它出现在/ home / git / repository /

但我仍然无法推动它。

我遵循了本指南:

https://github.com/gitlabhq/gitlabhq/blob/5-0-stable/doc/install/installation.md

以及让它在apache上运行的指南:

http://shanetully.com/2012/08/running-gitlab-from-a-subdirectory-on-apache/

6 个答案:

答案 0 :(得分:7)

经过数小时的调试后,我终于弄明白了,我知道配置有一个简单的问题。

由于第二个指南提到了如何使用相对url在apache上设置gitlab,你实际上必须在gitlab中做一些配置。 我取消了关于相对url:s unicorn.rb的行 在gitlab-shell / config中我添加了我的整个URL(带子目录)。

在:

 http://web-adress.com/

后:

 http://web-adress.com/subdomain/

现在效果很好。

答案 1 :(得分:4)

您可以使用下面的命令对其进行测试。当你登录时,应该说出你的名字。

ssh -T git@myserver.com

欢迎来到GitLab,Christian Hammer!

如果它说“欢迎使用GitLab,匿名!” gitlab不承认你是gitlab的用户。

答案 2 :(得分:2)

我不知道您是否已经解决了这个问题,但我发现如果我使用gitlab中使用的电子邮件地址生成密钥,则该过程有效。我采取的步骤:

ssh-keygen -t rsa -C "#email address#"

使用提供的电子邮件创建新的ssh密钥。

生成公钥/私钥RSA密钥对。

接下来只需使用下面的代码转储您的公钥并添加到GitLab SSH密钥

cat ~/.ssh/#key name#.pub

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC6eNtGpNGwstc....*

答案 3 :(得分:2)

更准确地说明接受的答案(“4月6日17:23回答”和“Joakim Engstrom”于7月21日编辑的“7月7日”):

您最有可能处于更新Gitlab以适合您自己的上下文路径(从http://localhost/<my_context_path>而不是http://localhost访问它)的情况。

在how-to中,没有提到也要修改这个gitlab-shell配置文件:

// logout any Gitlab open session, stop your Gitlab service, and your possible third-party webserver first  
$ sudo service apache2 stop  
$ sudo service gitlab stop  

// perform the modification that fixes it, if you indeed configured Gitlab to be accessed with a custom context path  
$ sudo -u git -H nano ~git/gitlab-shell/config.yml  

# Url to gitlab instance. Used for api calls. Should end with a slash.
-gitlab_url: "http://localhost/"
+gitlab_url: "http://localhost/<my_context_path>/"

// restart services  
$ sudo service gitlab start  
$ sudo service apache2 start  

// Try to push again from your particular Gitlab user local repository, to the Gitlab remote repository    
$ cd <path_to_my_local_repository>  
$ sudo -u <OS_username_that_owns_the_local_repository> -H git push -u origin master  
Counting objects: 3202, done.  
Delta compression using up to 2 threads.  
Compressing objects: 100% (3115/3115), done.  
Writing objects: 100% (3202/3202), 11.56 MiB | 5.34 MiB/s, done.  
Total 3202 (delta 609), reused 0 (delta 0)  
To `git@<my_FQDN>:<my_Gitlab_user_or_group_name>/<my_gitlab_project_ID>.git`  
  * [new branch]      master -> master  
Branch master set up to track remote branch master from origin.  
$   

关于“类似于stackoverflow.com/questions/13071234 / ... - Paul Verest 7月18日6:20”(Can't push to new gitlab install):
不,这不是此页面主题中的相同问题。

答案 4 :(得分:0)

在我的情况下,原因是nginx强制重定向到https。检查git用户是否可以通过运行

来使用gitlab-api
sudo -u git -H /home/git/gitlab-shell/bin/check

在服务器上。就我而言,输出是

Check GitLab API access: FAILED. code: 301

我必须将gitlab_url中的/home/git/gitlab-shell/config.yml更改为https://<domain>

答案 5 :(得分:0)

对我来说这是因为我限制谁可以在/ etc / ssh / sshd_config中使用ssh进入我的服务器AllowUsers git