yashigani?.days

週刊少年ジャンプについてだらだら書きます

gitで共有リポジトリを作るときに気をつけたいこと

ローカルのgitリポジトリを,共有マシンの Mac に共有gitリポジトリとして設置したときに軽くはまったのでメモ.

既存のgitを共有リポジトリにしたいときには,bareリポジトリというワーキングコピーを持たないリポジトリを作る.githubリポジトリとかでよく見かけるhoge.gitってやつ.これ自体を作るのは簡単で,こんな感じにする.

> git init --bare

基本的にはこれでbareリポジトリを作って共有ディレクトリに設置すればおしまいなんだけど,既存のリポジトリを共有リポジトリにする場合には,sharedオプションをつけて,以下のようにしよう.

> git init --bare --shared

sharedオプションをつけないと,ファイルパーミッションが無くてpushできなくなってしまう.怖いのが,だいたいの場合cloneできたら「共有リポジトリ完成!」って思っちゃって,いざpushしたときにrejectされて「あれっ?」ってなるところ.というか実際ぼくがそうだった.もうなっちゃったよ!けどもっかいbareリポジトリ作るの嫌だよ!って人は直接パーミッション直したら解決できる.

> git config core.sharedRepository group
> chmod -R g+ws hooks
> chmod -R g+ws info
> chmod -R g+ws objects
> chmod -R g+ws refs

sshさえできるようにしておけばgitリポジトリを共有できるので,Macならシステム環境設定から「ファイル共有」と「リモートログイン」をオンにしておいて,共有ディレクトリにbareリポジトリを置いておけば簡単に共有できる.大抵余ったMacがどっかに転がってるはずだから積極的に使うといいと思う.

関連

リポジトリを後から共有できるようにする。 - kuma8の日記

おすすめ書籍

入門Git

入門Git