我需要创建一个名为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):
$cp /some/where/mithun.pub keydir/mithun.pub
执行以下命令:
$ git add gitosis.conf keydir/mithun.pub
$ git commit -m "Added 'carboncake' repository and 'mithun' user."
$ git pull --rebase
$ git push
但它不会在我的服务器中创建任何carboncake.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
不显示任何内容
服务器上的/srv/gitosis/repositories/carboncake.git/refs/heads/
目录也是空的。
我该如何解决这个问题?
答案 0 :(得分:511)
您已经创建了一个新的存储库并将一些文件添加到索引中,但您还没有创建第一个提交。完成后:
git add a_text_file.txt
......做:
git commit -m "Initial commit."
......那些错误应该消失。
答案 1 :(得分:17)
快速回答:当您第一次成功克隆空git存储库时,源没有主分支。所以你第一次提交推动必须这样做:
git push origin master
将为您创建这个新的主分支。像这样的小事情与git非常混淆。
如果这不能解决你的问题,那么它可能与gitolite有关:
你的conf文件看起来很奇怪。应该有你的gitolite附带的示例conf文件。我看起来像这样:
repo phonegap
RW+ = myusername otherusername
repo gitolite-admin
RW+ = myusername
请确保您正确设置配置文件。
Gitolite实际上用一个不接受交互式终端会话的修改后的shell替换了gitolite用户的帐户。您可以通过使用gitolite用户帐户尝试ssh到您的盒子中来查看gitolite是否正常工作。如果它知道你是谁,它会说“Hi XYZ,你可以访问以下存储库:X,Y,Z”,然后关闭连接。如果它不认识您,它将关闭连接。
最后,在您的本地计算机上第一次git push失败后,您永远不应该在服务器上手动创建repo。我们需要知道你的git push最初失败的原因。一旦你设置了gitolite,你可能会让自己和gitolite更加混乱。