git サーバ on Ubuntu 10.04 LTS 構築メモ
Ubuntu 10.04 LTS上にgitのリポジトリを構築したので、設定メモ
# sudo apt-get install git-core
ローカルリポジトリを生成・コミット
適当にファイルを生成し、リポジトリに追加して、コミット
#mkdir test
#cd test
#git init
# touch testfile
# git add testfile
# git commit -m 'first commit'
リモートリポジトリを生成
bareリポジトリというのが良く分からなかったので、調べてみるとココに詳しく書いてあった。
#cd /var/git
#mkdir repos/test.git
#cd repos/test.git
#git --bare --shared
通常であれば
Gitの公開リポジトリは通常、管理ファイルのみを持つ「bareリポジトリ」として作成される。
通常bareリポジトリでは作業ツリーの変更やコミットといった操作は行わず、
ファイルのやりとりにのみ使用する。
また、慣例としてbareリポジトリとして使用するディレクトリには「.git」という拡張子が付けられる。
bareリポジトリは、「--bare」オプションを付けてでgit initを実行することで作成できる
のみで初期化されるが、複数マシンでリポジトリを共有して作業するといった運用をするならば、--bareと、さらにリポジトリに対するグループ書き込みパーミッションを自動的に追加するために--sharedオプションを付けて git init するといいようだ。
git init
ちなみに--sharedオプションを付けずに、ローカルからpushすると以下のようなエラーが出た。
生成したディレクトリの所有者とグループの設定
Counting objects: 4, done.
Writing objects: 100% (4/4), 256 bytes, done.
Total 4 (delta 0), reused 0 (delta 0)
error: insufficient permission for adding an object to repository database ./objectsfatal: failed to write object
error: unpack failed: unpack-objects abnormal exit
To ssh://pidekazu@192.168.100.10/var/git/repos/test.git
! [remote rejected] master -> master (n/a (unpacker error))
error: failed to push some refs to 'ssh://pidekazu@192.168.100.10/var/git/repos/bdlms.git'
以上でサーバ側の設定は終わりです。
#sudo chown -R repos .
#sudo chgrp -R repos .
- リモートリポジトリへ反映
ローカルリポジトリをリモートリポジトリへ反映させます。
ローカルマシンから以下を入力
git remote add origin以下で、誤ったURLを設定してしまった場合、
#cd test
#git remote add origin ssh://192.168.100.10/var/git/repos/test.git
#git push origin master
などと怒られてしまいますので、
fatal: remote origin already exists.
を実行することで、URLを変更することができます。
# git remote set-url ssh://192.168.100.10/var/git/repos/test.git
正しく変更されました。
#git remote -v
origin ssh://192.168.100.10/var/git/repos/test.git (fetch)
origin ssh://192.168.100.10/var/git/repos/test.git (push)