ベアレポジトリ(bare repository) は、空のベアレポジトリを作成するか、作成済みのgitレポジトリ(ノンベアレポジトリ)から作成する2つの方法があります。
空のベアレポジトリ作成
作成したいディレクトリに移動後、以下のコマンドで空のベアレポジトリが作成できます。 ベアレポジトリ名の最後は.gitにするのが慣例です。
git init --bare --shared [レポジトリ名].git
例 レポジトリ名sampleの作成
$ cd /tmp $ git init --bare --shared sample.git Initialized empty shared Git repository in /git/sample.git/これは /tmp ディレクトリに移動後、ベアレポジトリ /tmp/sample.git を作成しています。
ベアレポジトリの構成
ベアレポジトリはディレクトリです。その中は以下のようになります。
$ ls -al sample.git/ 合計 40 drwxrwsr-x 7 mikan pub 4096 8月 18 20:11 2024 . drwxr-xr-x 8 mikan pub 4096 8月 18 20:11 2024 .. -rw-rw-r-- 1 mikan pub 23 8月 18 20:11 2024 HEAD drwxrwsr-x 2 mikan pub 4096 8月 18 20:11 2024 branches -rw-rw-r-- 1 mikan pub 126 8月 18 20:11 2024 config -rw-rw-r-- 1 mikan pub 73 8月 18 20:11 2024 description drwxrwsr-x 2 mikan pub 4096 8月 18 20:11 2024 hooks drwxrwsr-x 2 mikan pub 4096 8月 18 20:11 2024 info drwxrwsr-x 4 mikan pub 4096 8月 18 20:11 2024 objects drwxrwsr-x 4 mikan pub 4096 8月 18 20:11 2024 refs
ベアレポジトリへの反映
作成した空ベアレポジトリに既存レポジトリを反映することができます。 その場合、既存レポジトリにリモートレポジトリとして登録して空ベアレポジトリに push する必要があります。
既存レポジトリにリモートレポジトリとして登録するコマンドは以下です。
git remote add origin [空ベアレポジトリのパス]
例 空レポジトリが git.example.com サーバーの /git/sample.git ディレクトリ、ユーザー"user" が sshで接続する場合
$ git remote add origin ssh://user@git.example.com/git/sample.git
コマンドの実行後、.git/config は以下のようになっていて、 [remote "origin"] の項目が追加されています。
[core] repositoryformatversion = 0 filemode = true bare = false logallrefupdates = true [remote "origin"] url = ssh://user@git.example.com/git/sample.git fetch = +refs/heads/*:refs/remotes/origin/*
次に以下のコマンドを実行して、ベアレポジトリに反映します。
git push --set-upstream origin masterオプションの "--set-upstream" は初回だけ実行します。以後のpushでは必要ありません。
このコマンド実行後、.git/config に以下が追加されています。
[branch "master"] remote = origin merge = refs/heads/master
ノンベアレポジトリからベアレポジトリを作成
すでに存在するgitレポジトリ(ノンベアレポジトリ)からベアレポジトリを作成することができます。 最近のフレームワーク等ではプロジェクトを作成すると自動でgitレポジトリが含まれている場合があり、そのような場合に使えます。
コマンドは以下になります。ベアレポジトリ名の最後は.gitにするのが慣例です。
git clone --bare [既存レポジトリパス] [ベアレポジトリパス]
例 既存レポジトリが /work/sample、 作成するベアレポジトリが /tmp/sample.git の場合
$ git clone --shared --bare /work/sample /tmp/sample.git Initialized empty Git repository in /tmp/sample.git/実行後、ベアレポジトリ /tmp/sample.git 作成されています。
ベアレポジトリ名は既存レポジトリ名と変えることもできます。
$ git clone --shared --bare /work/sample /tmp/test.git Initialized empty Git repository in /tmp/test.git/
注意 既存レポジトリからベアレポジトリを作成しても、ベアレポジトリは既存レポジトリのリモートリポジトリになっていません。 git remoteコマンドなどで追加する必要があります。