gitのローカル用の共有リポジトリ(?)を作る方法

背景

ローカル環境で一人で使うぶんには、

$ git init

して、そのディレクトリでずっと作っていけばいいんだけども、
そのディレクトリちょっと消したい状況とかでてきちゃったんだけど、
でも、gitのリポジトリは消したくないんだけどなぁって時に、
別のフォルダに共有のリポジトリを作ってしまえば、あとはそこから取得できるようになる。

共有リポジトリをつくろう

$ cd 共有リポジトリを作りたいフォルダ
$ git clone --bare ~/Documents/workspace/プロジェクト名/ プロジェクト名.git
説明

git cloneでgitリポジトリのコピーを作れるイメージなんだけど、 --bareがつくと
まるごとコピーするんじゃなくてリポジトリとして必要なぶんだけコピーされる。
つまり、プロジェクトのフォルダ構成はほとんどコピーされない。
単なるリポジトリとしてだけのフォルダが作られるわけ。

具体的な例

~/Document/repo
というディレクトリに、gitのリポジトリをためていこうと考えたので、
まず、 ~/Document/repo に移動して、 git clone --bare だ。

$ cd ~/Document/repo
$ git clone --bare ~/Documents/workspace/プロジェクト名/ プロジェクト名.git

共有リポジトリから取得しよう

これでリポジトリがつくれたので、いろんな場所で取得してみよう。
試しに~/Desktopで取得してみよう。

$ cd ~/Desktop
$ git clone ~/Documents/repo/プロジェクト名.git

これで、プロジェクト名のフォルダが作られるので、あとは普通に作業していけばよい。

取得したリポジトリの設定ファイルをみてみる

先ほど~/Desktopに取得したプロジェクトディレクトリに移動して

$ cat .git/config

としてみると色々出るが、次のような部分がある。

[remote "origin"]
	fetch = +refs/heads/*:refs/remotes/origin/*
	url = /Users/ユーザ名/Documents/repo/プロジェクト名.git

これが、共有リポジトリ(たぶん正確にはリモートリポジトリ)の先を示している。

共有リポジトリの元リポジトリにはoriginが設定されていない

共有リポジトリの元にしたリポジトリにはoriginが設定されていないので、

$ cd ~/Documents/workspace/プロジェクト名/
$ git remote add origin /Users/ユーザ名/Documents/repo/プロジェクト名.git

して originの設定をしてやると 共有リポジトリとやりとりできる。

参考

実用Git

実用Git