4

我有两个问题。我有 Ubuntu 10.10 并且我已经安装了带有 gitolite 工具的 git 服务器。一切都很好。gitolite 的 gl-setup 命令创建了 2 个存储库:gitolite-admin 和 testing。

1) 问题 1

我的默认 gitolite 管理员用户名为“git”并且已经创建。

首先,我必须克隆 gitolite-admin 存储库,进行一些更改,比如说 conf/gitolite.conf 以添加一些新的存储库和一个新用户(我添加了 root 用户,我之前创建了私钥/公钥,还添加了keydir 文件夹的公钥),然后我必须添加/提交并推送更改。3

信息:我的 ~git/.ssh/authorized_keys 文件很好,从 command= 开始并且只有一个值 - 我首先创建的 git 用户的公钥。

没用:

git@vs1:~/$ git clone git@<<SERVER_IP>>:gitolite-admin.git
Initialized empty Git repository in /home/git/ga/gitolite-admin/.git/
git@<<SERVER_IP>>'s password:
fatal: 'gitolite-admin.git' does not appear to be a git repository
fatal: The remote end hung up unexpectedly

工作:

touch ~/.ssh/config

内容:

host gitolite
     user git
     hostname <<SERVER_IP>>
     identityfile ~/.ssh/git.pub

git@vs1:~/$ git clone gitolite:gitolite-admin
Initialized empty Git repository in /home/git/ga/gitolite-admin/.git/
Enter passphrase for key '/home/git/.ssh/git.pub':
Enter passphrase for key '/home/git/.ssh/git.pub':
Enter passphrase for key '/home/git/.ssh/git.pub':
git@89.35.160.243's password:
remote: Counting objects: 23, done.
remote: Compressing objects: 100% (18/18), done.
remote: Total 23 (delta 4), reused 0 (delta 0)
Receiving objects: 100% (23/23), done.
Resolving deltas: 100% (4/4), done.

为什么我根本没有工作第一个变体?所有教程都说它应该可以正常工作。我必须使用第二个变体在 ~/.ssh/config 文件中创建该主机配置。这有点令人沮丧。repo 路径是 /home/git/repositories,ssh 是默认端口 22。

2) 问题 2

在同一台服务器上使用 root 用户,我在 /var/www/example.com/www 中创建了一个空文件夹。我运行了 git init,然后添加了一个文件 (.gitignore),运行了 git add -A 和 git commit -m "..."。

然后我为原点创建了远程路径:

git remote add origin git@<<SERVER_IP>>:myrepo.git

我跑了 git push origin master 这就是我得到的:

fatal: 'myrepo.git' does not appear to be a git repository
fatal: The remote end hung up unexpectedly

我尝试了各种改变,比如将整个路径放入存储库(即使我没有看到任何地方,所以它不正确),我得到了:

Counting objects: 3, done.
Writing objects: 100% (3/3), 243 bytes, done.
Total 3 (delta 0), reused 0 (delta 0)
remote: ENV GL_RC not set
remote: BEGIN failed--compilation aborted at hooks/update line 20.
remote: error: hook declined to update refs/heads/master
To git@<<SERVER_IP>>:/home/git/repositories/myrepo.git
 ! [remote rejected] master -> master (hook declined)
error: failed to push some refs to 'git@<<SERVER_IP>>:/home/git/repositories/myrepo.git'

我做错了什么?这令人沮丧,因为对于这样的基本任务,我遇到了这种不寻常的困难。我对 SVN 有丰富的经验,这些是第一次使用 GIT。

预先感谢您的帮助!

4

1 回答 1

1

identityfile注意 1/:如果是默认名称(id_rsa.pubid_rsa),这可能会起作用。由于情况并非如此,因此config文件是强制性的。

注意 2/ 你已经创建了一个 git repo,但是你让 gitolite 知道了吗?
应该在 gitolite-admin repo 的配置文件中声明新的 repo

如果您通过 ssh as 推送root,则意味着 use 有自己的~/.ssh/id_rsa(.pub)密钥,并且这些密钥是为 Gitolite 注册的。

回购路径的注意事项:永远不要使用回购的完整本地路径作为推/拉地址:这将完全绕过 Gitolite。


一个 gazillon 评论后来,似乎:

  • 所有远程地址都应以 :您希望您的用户以“ ”(负责 git 和 gitolite 的帐户)的身份执行 git 命令。 这意味着 ' ' 的公钥需要在git@somehostname:arepo.gitsomehostnamegit
    myusersomehostname:~git/.ssh/authorized_keys

  • 任何时候 ssh 连接不符合您的要求,您都可以从查看那些ssh 调试提示开始。
    例如:ssh -vvv git:somehostname可以很好地说明正在发生的事情

  • 如果你想避免一个config文件,那么你需要对那些公钥/私钥(和)使用标准命名约定~myuser/.ssh/id_rsa~myuser/.ssh/id_rsa.pub

于 2012-01-28T14:02:56.353 回答