Git错误:src refspec master与any不匹配

Mit*_*ran 217 git repository

我需要创建一个名为的repo carboncake.

我试过这个:

将gitosis-admin存储库克隆到我的本地计算机

$ git clone gitosis@myserver.net:repositories/gitosis-admin.git
$ cd gitosis-admin
$ vim gitosis.conf
Run Code Online (Sandbox Code Playgroud)

在文件末尾添加了[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
Run Code Online (Sandbox Code Playgroud)

然后复制了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
Run Code Online (Sandbox Code Playgroud)

但它不会在我的服务器中创建任何carboncake.git.

所以我跟着这个:

在服务器上执行以下命令:

$ su gitosis 
$ git init --bare /srv/gitosis/repositories/carboncake.git
Run Code Online (Sandbox Code Playgroud)

这是我的问题:

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

$ 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
Run Code Online (Sandbox Code Playgroud)

哪个返回错误:

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'
Run Code Online (Sandbox Code Playgroud)

当我尝试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'
Run Code Online (Sandbox Code Playgroud)

当我尝试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'
Run Code Online (Sandbox Code Playgroud)

git show-ref 在本地计算机上不显示任何内容

同时/srv/gitosis/repositories/carboncake.git/refs/heads/在服务器上的目录是空的.

我怎样才能解决这个问题?

Mar*_*air 528

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

 git add a_text_file.txt 
Run Code Online (Sandbox Code Playgroud)

......做:

 git commit -m "Initial commit."
Run Code Online (Sandbox Code Playgroud)

......那些错误应该消失.

  • `git`有一些可怕的错误信息. (70认同)
  • @Danny [几个月来第一次创建了一个新的存储库...](https://www.youtube.com/watch?v=t2F1rFmyQmY) (5认同)
  • 首先尝试`git分支“分支名称”` (5认同)
  • 不幸的是,对我的情况根本没有帮助。完成这些步骤后,我又收到另一个致命错误:无法创建“C:/Users/myname/Desktop/work/xamarin/myproj-vs2015/.git/index.lock”:文件存在。接着是“另一个 git 进程似乎正在这个存储库中运行,例如一个由 'git commit' 打开的编辑器。请确保所有进程都已终止,然后再试一次。如果仍然失败,则 git 进程可能在此崩溃较早的存储库:手动删除文件以继续。” 我没有任何其他进程,我尝试删除 .git 和 .git/index.lock 文件几次。 (2认同)

Mau*_*ord 18

快速回答:当您第一次成功克隆空git存储库时,源没有主分支.所以你第一次提交推动必须做到:

git push origin master
Run Code Online (Sandbox Code Playgroud)

这将为您创建这个新的主分支.像这样的小事情与git非常混淆.

如果这不能解决您的问题,那么它可能与gitolite相关的问题:

您的conf文件看起来很奇怪.应该有你的gitolite附带的示例conf文件.我看起来像这样:

repo    phonegap                                                                                                                                                                           
    RW+     =   myusername otherusername                                                                                                                                               

repo    gitolite-admin                                                                                                                                                                         
    RW+     =   myusername                                                                                                                                                               
Run Code Online (Sandbox Code Playgroud)

请确保您正确设置配置文件.

Gitolite实际上用一个不接受交互式终端会话的修改后的shell替换了gitolite用户的帐户.您可以通过使用gitolite用户帐户尝试ssh到您的盒子中来查看gitolite是否正常工作.如果它知道你是谁,它会说"Hi XYZ,你可以访问以下存储库:X,Y,Z",然后关闭连接.如果它不认识您,它将关闭连接.

最后,在您的本地计算机上第一次git push失败后,您永远不应该在服务器上手动创建repo.我们需要知道你的git push最初失败的原因.一旦你设置了gitolite,你可以让自己和gitolite更加混乱.