• Git
#5

【Git】いわゆるベアリポジトリ

今回はGit初心者向けにリモートリポジトリの作り方をお伝えします。

おさらい

リモートリポジトリの作り方

git remote add origin 該当プロジェクトのパス

コマンドラインでリモートリポジトリの確認する

$ git remote -v

# origin       https://github.com/remote-v/sample.git (fetch)
# origin       https://github.com/remote-v/sample.git (push)

configファイルから確認する

ローカル側の.git/configファイルを確認する

.
.
.
[remote "origin"]
       url = https://github.com/remote-v/sample.git  <= これ
       fetch = refs/heads/*:refs/remotes/origin/*
.
.
.

リモートリポジトリを作る時は--bareオプションをつける

会社ではリモートリポジトリをGitHubと社内のGitサーバの両方で運用しています。

社内のGitサーバにリモートリポジトリを作成する際は、--bareオプションをつけて作成しています。

というより、基本的には--bareをつけておくべきものですね。

bare(ベア)リポジトリを作る

コマンドで表すと、

$ mkdir bare_sample.git
$ cd bare_sample.git
$ git init --bare

### 必ずリポジトリ名の最後に.gitをつけてください

となります。

--bareをつけると、このリモートリポジトリにプッシュしても、

該当のファイルは視覚的には見えません。

なんで見れないの?

例えばGitHubにプッシュすると、手元のファイルと同じようにファイルを見ることができますが、

--bareオプションをつけたリモートリポジトリはワーキングディレクトリを持ちません。

ワーキングディレクトリとは、ファイルそのものがあるディレクトリ、

つまりローカル側のgitが管理しているディレクトリのことです。

なので上の例で言うところのbare_sample.gitディレクトリの中を見ても

git関連のファイルやディレクトリがあるだけで、

プッシュしたファイルなどは見えません。

ざっくりいうと、更新・変更した差分だけを情報として保存していて、

cloneやpullする時にそれらの実ファイルが現れてきます。

どうして空にする必要があるの?

それにはPro Git / Gitサーバー - プロトコルから引用させていただきます。

リモートリポジトリは、一般的に ベア(bare)リポジトリ となります。これは、作業ディレクトリをもたな い Git リポジトリのことです。 このリポジトリは共同作業の中継地点としてのみ用いられるので、

ディスク上にスナップショットをチェックアウトする必要はありません。単に Git のデータがあればそれでよいのです。

端的に言うと、ベアリポジトリとはそのプロジェクトの .git ディレクトリだけで構成されるもののことで す。

実ファイルじゃなくてGitのデータがあればそれでよいという設計なので、

GitHubのようなサービスでなく、管理用のリポジトリであればこれで問題ありません。

実ファイルがリモートリポジトリにあって複数人で更新していくと、

ファイルに不整合が起こる場合もあるのでルールに従ったほうがよいかと思います。

参考:ベアリポジトリとノンベアリポジトリ:理論編〜GitでWordpressのテーマを管理

普段意識しないもの

個人で開発する分には、GitHubが有能なので普段意識しないオプションなのですが、

Gitサーバにリモートリポジトリを作成する際は注意してみてくださいね。

プログラミングを学んでいくと、開発を便利にしてくれる様々なものがありますが、

それはどんな仕組みなのか、ラップされて隠れているものは何なのかを知ると

半歩進んだ感じがします。

これからも引き続き宜しくおねがいします。

*

last update: 2023/10/21