Gitを触ってみるよ その3「集中管理型リポジトリの作成」
Gitは分散型のバージョン管理システムなので、Subversionみたいな集中型のリポジトリを作るよりは、各々がリポジトリを持ち合うような開発手法の方が真骨頂なんだとは思います。が…そうは言っても、集中型リポジトリでの管理をしたい場合も多いのではないかなと。
そんな訳で、今回は、Subversionみたいな集中管理型のリポジトリの作成をやってみたいと思います。
既に存在するディレクトリを元にリポジトリを作る
これは例えば、"今までFTPサーバにみんなでファイル送信してソース管理していたが、ボスが突然、「GitGitにしてやんよ」とか言い出して、Gitで管理する事になった"とか、"プロジェクトで共通で使っているライブラリとかフレームワークがあって、ある程度ファイルが揃っている状態でリポジトリ管理をスタートしたい"とか、そんな場面が考えられます。
集中管理型リポジトリを使うからには複数人での開発が前提になると思うので、ほとんどの場合はこちらになると思います。
では、実際にリモートリポジトリを作ってみましょう。ここでは、"/path/to/project"配下にプロジェクトのファイルがあるとします。
# su - projectuser $ cd /path/to/project
ログディレクトリ等、Gitの管理外にしたいディレクトリがある場合は、そのディレクトリ配下に.gitignoreファイルを以下の内容で作成します。
* !.gitignore
例えばRailsであれば、logとtmpディレクトリ配下に作っておくとよいと思います。
あとは、一旦ローカルリポジトリとしてプロジェクトのファイルをコミットして、それを元にリモートリポジトリとして登録します。
$ git init $ git add . $ git commit -m 'Initialize.' $ su - git % cd public % git clone --bare /path/to/project NameOfProject.git
内容はプロジェクトに合わせて適宜読み替えて下さい。
新しくプロジェクトに参入した人は、以下のようにクライアントにソースをcloneして、開発を開始します。*1
$ git clone ssh://git@server/home/git/public/NameOfProject.git
空のリポジトリを作る
クライアント上で既にある程度開発を進めている場合や、完全にまっさらな状態からプロジェクトをスタートしたい場合は、サーバ上に空のリポジトリを作って開発を開始します。
こちらの方法は、個人での開発とかで、"PC上でちょこちょこ作っていたものがある程度カタチになってきたから、サーバ上での管理をしよう"とか、そんな場面での方法になると思います。
こちらは、空のリポジトリを作るだけなので非常に簡単です。
# su - git % cd public % mkdir NameOfProject.git % cd NameOfProject.git % git --bare init
なお、クライアント上で以下のようにリモートリポジトリを登録しておくと、リモートのURLをいちいち入力する必要がなくなるので、開発を進める時に楽になります。*2
$ git remote add origin ssh://git@server/home/git/pulic/NameOfProject.git