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/
ディレクトリも空です。
どうすればこれを修正できますか?
新しいリポジトリを作成していくつかのファイルをインデックスに追加しましたが、まだ最初のコミットを作成していません。完了したら
git add a_text_file.txt
... 行う:
git commit -m "Initial commit."
...そしてそれらのエラーは消えます。
簡単な答え:最初に空の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を混乱させる可能性があります。