Git push - 似乎不是 git 存储库(ssh 指向错误的目录)
Posted
技术标签:
【中文标题】Git push - 似乎不是 git 存储库(ssh 指向错误的目录)【英文标题】:Git push - does not appear to be a git repository (ssh pointing to wrong directory) 【发布时间】:2014-05-04 19:47:31 【问题描述】:案例:
我已经按照this 教程在ubuntu 12.04 版中安装了项目omnibus-gitlab。
一切似乎都是正确的。服务器通过局域网正常工作,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
在push命令的那一刻,终端返回了这个消息:
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:git-data/repositories/root/project1.git
代替git@192.168.1.68:root/project1.git
,它工作得很好,我们能够正常推送存储库。
问题:
为什么会发生这种情况,如何将 ssh 地址指向正确的目录(或存储库)路径?
【问题讨论】:
如果root
重定向到/var/opt/gitlab
你能不使用git remote add origin git@192.168.1.68:root/git-data/repositories/project1.git
吗?
否,因为git@192.168.1.68:root/git-data/repositories/project1.git
将访问路径/var/opt/gitlab/root/git-data/repositories/project1.git
。正确的路径是/var/opt/gitlab/git-data/repositories/root/project1.git
,所以我可以使用命令git@192.168.1.68:git-data/repositories/root/project1.git
但这似乎不是正确的方式
【参考方案1】:
在添加要推送到的源时,您应该能够使用您想要的目录的绝对路径:
git remote add origin git@192.168.1.68:/var/opt/gitlab/git-data/repositories/root/project1.git
或者,要回答有关将 ssh 定向到存储库目录(或其他路径)的问题,您需要创建一个将该路径作为主目录的用户并在源连接中使用它。假设您将 newuser 的主目录设为您要使用的 repositories 目录:
git remote add newuser@192.168.1.68:root/project1.git
【讨论】:
【参考方案2】:我想我遇到了同样的问题。
您可能需要正确配置您的密钥。您的 /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 用户登录,则您的授权密钥未按上述配置
编辑: 需要明确的是,在设置 gitlab 时,您似乎不需要任何额外的 authorized_keys 。我的 authorized_keys 文件是空的,gitlab 可以正常工作。
【讨论】:
以上是关于Git push - 似乎不是 git 存储库(ssh 指向错误的目录)的主要内容,如果未能解决你的问题,请参考以下文章
git:在 Mac 上尝试将存储库推送到 Amazon Elastic Beanstalk 时,“aws.push”不是 git 命令
Git 推送:“致命的 'origin' 似乎不是 git 存储库 - 致命的无法从远程存储库读取。”
无法将 master 推送到 Github -“origin”似乎不是 git 存储库/权限被拒绝