4

2 つの問題があります。Ubuntu 10.10 を使用しており、gitolite ツールを使用して git サーバーをインストールしました。すべてがうまくいきました。gitolite の gl-setup コマンドは、gitolite-admin と testing の 2 つのリポジトリを作成しました。

1) 質問 1

私のデフォルトの gitolite 管理者ユーザーは「git」と呼ばれ、既に作成されています。

最初に、gitolite-admin リポジトリのクローンを作成し、たとえば conf/gitolite.conf にいくつかの変更を加えて、新しいリポジトリと新しいユーザーを追加する必要がありました (root ユーザーを追加し、前に秘密鍵/公開鍵を作成し、さらに追加しましたkeydir フォルダーへの公開鍵)、変更を追加/コミットしてプッシュバックする必要がありました.3

情報: 私の ~git/.ssh/authorized_keys ファイルは問題ありません。command= で始まり、最初に作成した git ユーザーの公開鍵という 1 つの値しかありません。

動作しませんでした:

git@vs1:~/$ git clone git@<<SERVER_IP>>:gitolite-admin.git
Initialized empty Git repository in /home/git/ga/gitolite-admin/.git/
git@<<SERVER_IP>>'s password:
fatal: 'gitolite-admin.git' does not appear to be a git repository
fatal: The remote end hung up unexpectedly

働いた:

touch ~/.ssh/config

内容:

host gitolite
     user git
     hostname <<SERVER_IP>>
     identityfile ~/.ssh/git.pub

git@vs1:~/$ git clone gitolite:gitolite-admin
Initialized empty Git repository in /home/git/ga/gitolite-admin/.git/
Enter passphrase for key '/home/git/.ssh/git.pub':
Enter passphrase for key '/home/git/.ssh/git.pub':
Enter passphrase for key '/home/git/.ssh/git.pub':
git@89.35.160.243's password:
remote: Counting objects: 23, done.
remote: Compressing objects: 100% (18/18), done.
remote: Total 23 (delta 4), reused 0 (delta 0)
Receiving objects: 100% (23/23), done.
Resolving deltas: 100% (4/4), done.

最初のバリアントがまったく機能しなかったのはなぜですか? すべてのチュートリアルでは、問題なく動作するはずです。~/.ssh/config ファイルでそのホスト構成を作成するために、2 番目のバリアントを使用する必要がありました。これは少しイライラします。リポジトリ パスは /home/git/repositories で、ssh はデフォルトのポート 22 です。

2) 質問 2

同じサーバーでユーザー root を使用して、たとえば /var/www/example.com/www に空のフォルダーを作成しました。git init を実行してから、ファイル (.gitignore) を追加し、git add -A と git commit -m "..." を実行しました。

次に、origin のリモート パスを作成しました。

git remote add origin git@<<SERVER_IP>>:myrepo.git

git push origin master を実行したところ、次のようになりました。

fatal: 'myrepo.git' does not appear to be a git repository
fatal: The remote end hung up unexpectedly

リポジトリへのパス全体を配置するなど、さまざまなことを変更しようとしました(どこにも表示されなかったので、正しくありません)。

Counting objects: 3, done.
Writing objects: 100% (3/3), 243 bytes, done.
Total 3 (delta 0), reused 0 (delta 0)
remote: ENV GL_RC not set
remote: BEGIN failed--compilation aborted at hooks/update line 20.
remote: error: hook declined to update refs/heads/master
To git@<<SERVER_IP>>:/home/git/repositories/myrepo.git
 ! [remote rejected] master -> master (hook declined)
error: failed to push some refs to 'git@<<SERVER_IP>>:/home/git/repositories/myrepo.git'

私が間違っていることは何ですか?このような基本的なタスクに対して、私はこの異常な困難を経験しているため、これはイライラしています。私は SVN の経験が豊富で、GIT を使用するのは初めてです。

よろしくお願いします。

4

1 に答える 1

1

1/ の注記: がidentityfileデフォルト名 (id_rsa.pubおよびid_rsa) である場合、これは機能していた可能性があります。そうではなかったので、configファイルは必須でした。

2/ あなたは git リポジトリを作成しましたが、gitolite にそのことを知らせましたか?
gitolite -admin repo の構成ファイルで新しいリポジトリを宣言する必要があります

として ssh をプッシュしている場合root、それは use に独自の~/.ssh/id_rsa(.pub)キーがあり、それらのキーが Gitolite に登録されていることを意味します。

レポ パスに関する注意: プッシュ/プル アドレスにレポの完全なローカル パスを使用しないでください: Gitolite を完全に回避します。


ガジロンのコメントは後で、次のように見えます。

  • すべてのリモート アドレスは で始まる必要があり ます: ユーザーが' ' (git と gitolite を担当するアカウント)としてgit コマンドを実行するようにします。 つまり、「 」の公開鍵をgit@somehostname:arepo.gitsomehostnamegit
    myusersomehostname:~git/.ssh/authorized_keys

  • ssh 接続がうまくいかないときはいつでも、これらのssh デバッグのヒントを見ることから始めることができます。
    たとえばssh -vvv git:somehostname、何が起こっているのかを説明するのに大いに役立ちます

  • configファイルを避けたい場合は、それらの公開鍵/秘密鍵 ( 、および)に標準の命名規則を使用する必要があります。~myuser/.ssh/id_rsa~myuser/.ssh/id_rsa.pub

于 2012-01-28T14:02:56.353 に答える