Git push - 似乎不是一个git存储库(ssh指向错误的目录)

时间:2014-03-26 12:05:08

标签: git ssh gitlab openssh

案例:

我已经在omnibus-gitlab教程之后的ubuntu版本12.04中安装了项目this

一切似乎都是正确的。服务器通过IP 192.168.1.68 通过局域网正常工作,我可以访问gitlab的所有功能(使用浏览器)。

我创建了一个项目,其中 root 用户(管理员)名为 project1 (也正确配置了密钥)

通过浏览器创建项目,我在本地工作区中再次创建它,将其定义为已提交的存储库(进行了一些更改)并将其推送到服务器。基本上我遵循了以下步骤:

mkdir teste
cd teste
git init
touch README
git add README
git commit -m 'first commit'
git remote add origin git@192.168.1.68:root/project1.git
git push -u origin master

推送命令时,终端返回了以下消息:

root@pcname:~Projects/project1# git push -u origin master
git@192.168.1.68's password:
fatal: 'root/project1.git' does not appear to be a git repository
fatal: The remote end hung up unexpectedly

确定。尝试了解为什么会发生这种情况,我才刚刚意识到,当我们访问ssh服务器git@192.168.1.68时,我们没有访问真正的存储库目录,而是这样,我们正在访问3个以前的级别。

因此,这是具有存储库的目录:

/var/opt/gitlab/git-data/repositories这里我们有root/project1.git目录/存储库。

而不是那条路径,当我们访问git@192.168.1.68:root时,我们实际上正在访问:

/var/opt/gitlab没有root目录。

因此,结果自然就是没有找到存储库的git警告。

ps:我们使用git@192.168.1.68:root/project1.git代替git@192.168.1.68:git-data/repositories/root/project1.git它是否运作良好,我们能够正常推送存储库。

问题:

为什么会发生这种情况?如何将ssh地址定向到正确的目录(或存储库)路径?

2 个答案:

答案 0 :(得分:0)

您应该能够在添加原点时使用所需目录的绝对路径来推送到:

git remote add origin git@192.168.1.68:/var/opt/gitlab/git-data/repositories/root/project1.git

或者,要回答关于将ssh指向存储库目录(或其他路径)的问题,那么您需要创建一个具有该路径的用户作为主目录,并在原始连接中使用该路径。假设您使用 newuser 的主目录 存储库 目录,您将使用:

git remote add newuser@192.168.1.68:root/project1.git

答案 1 :(得分:0)

我想我一直在遇到同样的问题。

您可能需要正确配置密钥。您的/var/opt/gitlab/.ssh/authorized_keys应该是(当然包含您的密钥):

command="/opt/gitlab/embedded/service/gitlab-shell/bin/gitlab-shell key-2",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty ssh-rsa AAAAB..your.key...... someoneskey@keylabs.lab

(!)请注意,有些文档似乎已过时且路径已更改

如果你ssh到你的节点

ssh -T git@mynode.com

它应该说:

Welcome to GitLab, <yourname>!

并且应该关闭连接。如果它说

Welcome to GitLab, Anonymous!

您的用户无法识别。您需要在Web界面中将您的密钥添加到您的用户。

如果您能够通过ssh使用git用户登录,则您的authorized_keys未按上述方式配置

修改 要清楚,在设置gitlab时似乎不需要任何额外的authorized_keys。我的authorized_keys文件是空的,gitlab可以正常工作。