1. ホーム
  2. git

[解決済み] git init」と「git init -bare」の違いは何ですか?

2022-03-05 20:47:48

質問

とはどのような違いがあるのでしょうか? git initgit init --bare ? を必要とするブログ記事が多いことに気がつきました。 --bare を Git サーバーに使用することはできますか?

から マニュアルページ と書いてありました。

--bare

ベアリポジトリを作成します。GIT_DIR 環境が設定されていない場合、現在の作業ディレクトリに設定されます。

しかし、実際にはどうなのでしょうか?それは --bare を Git サーバーに設定する必要があるのでしょうか?

解決方法は?

裸のGitレポ

このバリエーションは作業ディレクトリを持つリポジトリを作成するので、実際に作業することができます ( git clone ). 作成後、そのディレクトリに .git フォルダに、履歴とすべての git の配管が入ります。あなたが作業するのは .git フォルダーがあります。

素のGitレポ

もうひとつのバリエーションは、作業ディレクトリを持たないリポジトリを作成します ( git clone --bare ). 作業可能なディレクトリは得られません。ディレクトリの中にあるものは、すべて .git フォルダーを作成します。

一方を使う理由と他方を使う理由

作業ディレクトリを持たないgitリポジトリの必要性は、ブランチをプッシュしても誰かが作業しているものが管理されないという事実があるからです。それでも、むき出しでないリポジトリにプッシュすることはできますが、その作業ディレクトリで誰かが作業しているブランチを移動させる可能性があるため拒否されるでしょう。

つまり、作業フォルダがないプロジェクトでは、gitが保存しているオブジェクトしか見ることができないのです。それらは圧縮され、シリアライズされ、その内容のSHA1(ハッシュ)の下に保存されています。素のリポジトリでオブジェクトを取得するためには git show を指定し、見たいオブジェクトのsha1を指定します。あなたのプロジェクトがどのような構造になっているかは見ることができないでしょう。

ベアリポジトリは、通常、誰もが自分の仕事を移動させる中央リポジトリです。実際の作業を操作する必要はありません。複数の人の間で努力を同期させるための方法です。あなたは自分のプロジェクトファイルを直接見ることはできません。

プロジェクトに取り組んでいるのが自分だけであったり、論理的に中心的なリポジトリが必要でない場合は、ベアリポジトリは必要ないでしょう。そのような場合は git pull から を他のリポジトリにコピーすることができます。これにより、裸のリポジトリでないところにプッシュするときにgitが持つ異論を回避することができます。

お役に立てれば幸いです。