我需要创建一个名为carboncake的回购。

我试了一下:

将gitosis-admin存储库克隆到本地机器

$ git clone gitosis@myserver.net:repositories/gitosis-admin.git
$ cd gitosis-admin
$ vim gitosis.conf

在文件末尾增加了[repo carboncake]和[group carboncake]部分

[gitosis]

[group team]
writable = sweepshots
members = git_id_rsa

[group gitosis-admin]
writable = gitosis-admin
members = git_id_rsa

[repo carboncake]
description = A brand new app by Mithun.
owner = Mithun P

[group carboncake]
writable = myappname
members = mithun @core

然后复制由Putty生成的pub密钥文件(我使用Git basg for Windows):

一些地方/ mithun cp美元。keydir - mithun酒吧。酒吧

执行如下命令:

$ git add gitosis.conf keydir/mithun.pub
$ git commit -m "Added 'carboncake' repository and 'mithun' user."

$ git pull --rebase
$ git push

但它不会产生任何碳饼。git在我的服务器。

所以我就这么做了:

在服务器端执行如下命令:

$ su gitosis 
$ git init --bare /srv/gitosis/repositories/carboncake.git

我的问题是:

我尝试从本地机器签出/克隆新的存储库

$ mkdir carboncake
$ cd carboncake
$ git init 
$ touch a_text_file.txt 
$ git add a_text_file.txt 
$ git remote add origin gitosis@myserver.net:repositories/carboncake.git
$ git push origin master

返回错误:

error: src refspec master does not match any.
fatal: The remote end hung up unexpectedly
error: failed to push some refs to 'gitosis@myserver.net:repositories/carboncake.git'

当我尝试git push origin HEAD:master时,它返回错误:

error: src refspec HEAD does not match any.
fatal: The remote end hung up unexpectedly
error: failed to push some refs to 'gitosis@myserver.net:repositories/carboncake.git'

当我尝试git push origin master:refs/heads/master时,它返回错误:

error: src refspec master does not match any.
fatal: The remote end hung up unexpectedly
error: failed to push some refs to 'gitosis@myserver.net:repositories/carboncake.git'

Git show-ref在本地机器上不显示任何东西

也/电脑/ gitosis /仓库/ carboncake。服务器上的Git /refs/heads/目录为空。

我该如何解决这个问题?


当前回答

可能的快速回答是:当您第一次成功克隆一个空git存储库时,源没有主分支。所以当你第一次有commit要推送时,你必须做到:

git push origin master

它将为您创建这个新的主分支。像这样的小事对少管所来说是很混乱的。

如果这不能解决你的问题,那么这可能是一个与方石有关的问题:

你的conf文件看起来很奇怪。你的gitolite应该有一个示例conf文件。我的是这样的:

repo    phonegap                                                                                                                                                                           
    RW+     =   myusername otherusername                                                                                                                                               

repo    gitolite-admin                                                                                                                                                                         
    RW+     =   myusername                                                                                                                                                               

请确保您正确地设置了您的conf文件。

Gitolite实际上用修改过的shell替换了Gitolite用户的帐户,该shell不接受交互式终端会话。您可以通过尝试使用gitolite用户帐户ssh进入您的盒子来查看gitolite是否正在工作。如果它知道你是谁,它会说“嗨,XYZ,你有权访问以下存储库:X, Y, Z”,然后关闭连接。如果它不认识你,它就会关闭连接。

最后,当你第一次在本地机器上推送git失败后,你永远不应该在服务器上手动创建repo。我们需要知道你的git推送最初失败的原因。一旦你建立了giitolite,如果你不专门使用它,你可能会让你自己和giitolite更加困惑。

其他回答

可能的快速回答是:当您第一次成功克隆一个空git存储库时,源没有主分支。所以当你第一次有commit要推送时,你必须做到:

git push origin master

它将为您创建这个新的主分支。像这样的小事对少管所来说是很混乱的。

如果这不能解决你的问题,那么这可能是一个与方石有关的问题:

你的conf文件看起来很奇怪。你的gitolite应该有一个示例conf文件。我的是这样的:

repo    phonegap                                                                                                                                                                           
    RW+     =   myusername otherusername                                                                                                                                               

repo    gitolite-admin                                                                                                                                                                         
    RW+     =   myusername                                                                                                                                                               

请确保您正确地设置了您的conf文件。

Gitolite实际上用修改过的shell替换了Gitolite用户的帐户,该shell不接受交互式终端会话。您可以通过尝试使用gitolite用户帐户ssh进入您的盒子来查看gitolite是否正在工作。如果它知道你是谁,它会说“嗨,XYZ,你有权访问以下存储库:X, Y, Z”,然后关闭连接。如果它不认识你,它就会关闭连接。

最后,当你第一次在本地机器上推送git失败后,你永远不应该在服务器上手动创建repo。我们需要知道你的git推送最初失败的原因。一旦你建立了giitolite,如果你不专门使用它,你可能会让你自己和giitolite更加困惑。

您已经创建了一个新的存储库,并将一些文件添加到索引中,但是还没有创建第一次提交。完成之后:

 git add a_text_file.txt 

... 做的事:

 git commit -m "Initial commit."

... 这些错误应该消失。