GIT 克隆和第一个 GIT 推送问题

标签 git gitolite git-clone git-remote

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

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 "..."。

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

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 的第一次尝试。

预先感谢您的帮助!

最佳答案

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

注意 2/你已经创建了一个 git 仓库,但是你让 gitolite 知道了吗?
should declare the new repo in the config file of the gitolite-admin repo .

如果您以 root 身份通过 ssh 推送,这意味着使用有自己的 ~/.ssh/id_rsa(.pub) key ,并且这些 key 已注册用于 Gitolite。

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


gazillon 稍后发表评论,看来:

  • 所有远程地址都应以 git@somehostname:arepo.git 开头:您希望您的用户在somehostname as 'git'(负责git和gitolite的账号)。
    这意味着“myuser”的公钥需要在 somehostname:~git/.ssh/authorized_keys

  • 上注册
  • 任何时候 ssh 连接不正常,您可以先查看那些 ssh debugging tips .
    例如:ssh -vvv git:somehostname 可以很好地说明正在发生的事情

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

关于GIT 克隆和第一个 GIT 推送问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9040761/

相关文章:

适用于 AIX 6.1+ 的 GIT 客户端

git - 拒绝用户访问 gitolite-admin

git clone from->to 目录混淆

git - 如何将 fetch 的结果 merge 到 master 中?

Git commit 显示总文件替换而不是逐行更改

linux - 推送到服务器时的 Gitolite 错误

git - Bitbucket - 我可以跟踪或查看谁从存储库中克隆或提取数据吗?

Git 部分克隆 : how to disable dynamic object fetching?

Git pack 文件入口格式

git - 无法使用非 gitolite 管理员用户访问 gitolite 存储库