私はSVNを何年も使用していますが、Gitを初めてテストしたいと思います。
以前の資格情報(で作成)を保持するためにHTTPプロトコルを使用しようとしましたhtpasswd
。
私は自分のサーバーで次の手順に従いました。
$ aptitude install git-core apache2
$ mkdir -p /var/git/repositories
$ htpasswd -c /var/git/passwd my_account
$ cat > /etc/apache2/sites-available/git << EOF
<VirtualHost *:80>
ServerName git.mydomain.com
SetEnv GIT_PROJECT_ROOT /var/git/repositories
SetEnv GIT_HTTP_EXPORT_ALL
SetEnv REMOTE_USER=$REDIRECT_REMOTE_USER
ScriptAlias / /usr/lib/git-core/git-http-backend/
DocumentRoot /var/git/repositories
<Directory /var/git/repositories>
Options +ExecCGI +SymLinksIfOwnerMatch -MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
<Location />
AuthType Basic
AuthName "Git Access"
AuthUserFile /var/git/passwd
Require valid-user
</Location>
</VirtualHost>
EOF
$ a2ensite git
$ service apache2 reload
$ cd /var/git/repositories
$ git init --bare my_project.git
$ git update-server-info
私のクライアントでは、これを行います:
$ git clone http://git.mydomain.com/my_project.git
$ cd my_project
$ cat > test-file.txt << EOF
This is a test
EOF
$ git add test-file.txt
$ git commit -m "My first commit"
今のところすべてが大丈夫のようです。
リモートリポジトリでコンテンツを更新したいので、更新しますgit pull
が、これは機能しません。Gitは次のメッセージを返します:
構成で、リモートからのref'master'とマージするように指定されていますが、そのようなrefはフェッチされていません。
とにかく、私は自分のコードに一人でいます。後で修正しようと思います。サーバーにプッシュしてみましょう。
だから私はしますgit push
。
共通の参照はなく、指定もありません。何もしない。
おそらく、「master」などのブランチを指定する必要があります。
すべてが最新です
わかりました... 「何もしません」が「すべてが最新です」?
少し確認した後、次のコマンドを見つけて実行します。git push origin master
今回は次のメッセージが表示されます。
エラー:解凍に失敗しました:unpack-objects異常終了http://git.mydomain.com/my_project.git
へ ![リモート拒否]マスター->マスター(該当なし(アンパッカーエラー)) エラー:一部の参照を「http://git.mydomain.com/my_project.git」にプッシュできませんでした
私はウェブ上の多くのチュートリアルに従おうとしました。
私の設定は単純だと思うので、なぜそれが機能しないのか理解できません。
私を助けてくれる人に感謝します。
編集 :
http://www.kernel.org/pub/software/scm/git/docs/git-http-backend.htmlに従って、最初からやり直しました。
gitwebは必要ありません。GitクライアントでHTTPプロトコルを使用したいだけです。
だから私の仮想ホストは:
<VirtualHost *:80>
ServerName git.mydomain.com
SetEnv GIT_PROJECT_ROOT /var/git/repositories
SetEnv GIT_HTTP_EXPORT_ALL
SetEnv REMOTE_USER=$REDIRECT_REMOTE_USER
ScriptAlias / /usr/lib/git-core/git-http-backend/
DocumentRoot /var/git/repositories
<Location />
AuthType Basic
AuthName "Git Access"
AuthUserFile /var/git/passwd
Require valid-user
</Location>
</VirtualHost>
まったく同じエラーが発生します。
git pull
戻り値 :
構成で、リモートからのref'master'とマージするように指定されていますが、そのようなrefはフェッチされていません。
そしてgit push origin master
戻ります:
エラー:解凍に失敗しました:unpack-objects異常終了http://git.mydomain.com/my_project.gitへ ![リモート拒否]マスター->マスター(該当なし(アンパッカーエラー))エラー:一部の参照を「http://git.mydomain.com/my_project.git」にプッシュできませんでした