プライベートな git リポジトリを手軽に用意する。
プログラマなら誰しも自分用のプライベートな git リポジトリを持っていることだろう。
いままで自分専用のリポジトリを利用するために github を利用してきた。 github は Web インターフェースを備えており Wiki や Graph などチームで開発をするために有用な機能がある。
しかし github でリポジトリを非公開にするには課金しないといけない。そのためいままで必要に迫られて課金してきたのだが、よく考えると自分専用のサーバー群を格安で持てるこの時代に最低月 7 ドルもリポジトリのためだけにマネーを支払うのはなんとも勿体無い話である。上記のリッチな付加機能も自分一人で利用するならほとんど必要無い。
そこで自分のサーバーに git のリポジトリを用意することにした。セキュアにしたいので通信プロトコルは ssh を利用することにする。そのやり方をメモしたので公開する。
新しく公開用の git リポジトリを作成する場合。
mkdir -p ~/git-bare/repo # 公開場所はサーバーの ~/git-bare/repo.git とする cd ~/git-bare/repo git init # リポジトリを初期化する touch readme.txt git add readme.txt git commit -m "first commit" # 何でも良いからとにかくコミットする cd .. git clone --bare repo repo.git # repo リポジトリから公開用の bare リポジトリを生成する
git は空のリポジトリであってはならず、最初に必ず何かをコミットしておく必要がある。
上記の例では readme.txt を初期ファイルとしている。
既存の github のリポジトリから移行する場合。
mkdir -p ~/git-bare cd ~/git-bare git clone git@github.com:yourname/repo.git # github からクローンを生成する git clone --bare repo repo.git # github のクローンからさらに公開用の bare リポジトリを生成する
この時点で ~/git-bare には repo と repo.git というディレクトリが存在する。このうち repo.git が bare リポジトリとなる。これは公開用のものであり repo のファイル自体は含まない。
利用してみる。
ではさっそく他のマシンから上記のリポジトリにアクセスできるか試してみる。ここからはローカルで作業する。
git clone ssh://yourname@hostname/~yourname/git-bare/repo.git
これでローカルにリポジトリの内容を取得できれば成功である。
さらに確認のためローカルで変更をし、それをサーバーのリポジトリに反映してみる。
cd repo touch hoge.txt git add hoge.txt git commit -m "test" git push
これで無事に push されれば成功である。あとは思う存分コードを書いてコミットしまくれば良い。
万全を期すなら、ローカルのリポジトリを一旦削除し再度 git clone してみて push した内容も含めて取得できることを確認しておこう。