web-dev-qa-db-ja.com

Gitエラー:src refspec masterがどれにも一致しません

carboncakeという名前のリポジトリを作成する必要があります。

私はこれを試しました:

Gitosis-adminリポジトリを私のローカルマシンにクローンしました

$ git clone [email protected]: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キーファイルをコピーしました(私はWindows用のGit basgを使っています):

$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

しかし、それはMy Serverに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 [email protected]: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 '[email protected]: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 '[email protected]: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 '[email protected]:repositories/carboncake.git'

ローカルマシンのgit show-refに何も表示されない

サーバ上の/srv/gitosis/repositories/carboncake.git/refs/heads/ディレクトリも空です。

どうすればこれを修正できますか?

210

新しいリポジトリを作成していくつかのファイルをインデックスに追加しましたが、まだ最初のコミットを作成していません。完了したら

 git add a_text_file.txt 

... 行う:

 git commit -m "Initial commit."

...そしてそれらのエラーは消えます。

512
Mark Longair

簡単な答え:最初に空のgitリポジトリをうまくクローンしたとき、Originにはマスターブランチがありません。ですから、初めてPushをコミットするのであれば、やらなければなりません。

git Push Origin master

これにより、この新しいマスターブランチが作成されます。このようなささいなことはgitと非常に混乱します。

これで問題が解決しない場合は、おそらくgitolite関連の問題です。

あなたのconfファイルは奇妙に見えます。 gitoliteに付属のconfファイルの例があるはずです。私のものはこんな感じです:

repo    phonegap                                                                                                                                                                           
    RW+     =   myusername otherusername                                                                                                                                               

repo    gitolite-admin                                                                                                                                                                         
    RW+     =   myusername                                                                                                                                                               

Confファイルを正しく設定していることを確認してください。

Gitoliteは実際にはgitoliteユーザーのアカウントを、対話型の端末セッションを受け付けない変更されたシェルに置き換えます。 gitoliteユーザーアカウントを使ってあなたのボックスにsshしようとすることでgitoliteが機能しているかどうかを確認できます。あなたが誰であるか知っていれば、 "Hi XYZ、あなたは次のリポジトリへのアクセス権を持っています:X、Y、Z"と言って接続を閉じます。それがあなたを知らないのなら、それは単に接続を閉じるでしょう。

最後に、あなたの最初のgit Pushがあなたのローカルマシンで失敗した後、あなたは決して手動でサーバ上にリポジトリを作成することに頼るべきではありません。なぜあなたのgit Pushが最初に失敗したのかを知る必要があります。一度設定したgitoliteを排他的に使用しないと、自分自身とgitoliteを混乱させる可能性があります。

17
Mauvis Ledford