0

コマンドを使用して空のベアリポジトリを作成したCentos5マシンで作業しています

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

git-metadataのみが含まれています。次に、コマンドを使用して同じシステムでgitデーモンを起動しました

$  git daemon --reuseaddr --base-path=/data/test_work/ --export-all --verbose --enable=receive-pack

LAN内の別のマシンから、空のリポジトリのクローンを作成し、いくつかのファイルを追加してコミットし、コマンドを使用してマスターにプッシュします

$ git clone git://<system_ip where git dameon run>/test_repo.git

その中にいくつかのファイルを追加してコミットし、gitにプッシュします

$ git push origin master

次に、別のマシンからクローンを作成しました。これはうまく機能し、プッシュしたすべての変更を取得します。

しかし、git-daemonを実行しているマシンで実際のtest_repo.gitを見たとき。コミットしたファイルが保存されているgit-metaデータのみが含まれていますか?

git-daemonとbareリポジトリの実際のデータが保存される場所を教えてください。それは私のマシン自体にありますか、それとも他の場所にありますか?

4

2 に答える 2

1

ファイルはGitオブジェクトストアに保存され、ベアリポジトリの場合はそのまま表示されません。それらはチェックアウトされておらず、作業コピーはなく、データとメタデータのみがあり、スペースを節約して速度を上げるためにバイナリ形式で保存されています。

実際のデータはobjects/packディレクトリにあります。

詳細については、gitがデータを保存する方法を参照してください。

于 2013-02-26T08:10:04.863 に答える
1

Gitは通常.gitディレクトリを使用してメタデータを保存します。作業ディレクトリでこのディレクトリ以外のすべてを削除した場合でも、を使用してコミットしたファイルを元に戻すことができますgit checkout

いわゆるベアリポジトリ(オプション--bare)を作成しました。.gitメタデータのみが含まれています。直接作業するために使用することを意図していないため、ファイルはストレージスペースを浪費するだけであり、誰かがリポジトリを更新するときに、これらのファイルを更新することはとにかく無駄な労力になります。複数の異なるブランチへのコミットを受け取った場合、とにかくどのブランチをチェックアウトする必要がありますか!?!コミットおよびその他のgitオブジェクトはobjects/、コミットSHA1の最初の文字で始まるサブディレクトリ(たとえば、SHA1を含むgitオブジェクトをffee0ccd6cce082784d515a6321a7afbfdc0dde0ディレクトリに見つけることができるobjects/ff/ee0ccd6cce082784d515a6321a7afbfdc0dde0)またはobjects/pack/パック形式のディレクトリ(同じ場所に配置されたいくつかのオブジェクト)に具体的に保存されます。ストレージスペースを節約するための高度に圧縮されたファイル)。

すべては、コミットするベアディレクトリに保存されます。あなたがそう言わない限り、何もネットワークを介して秘密の神秘的な場所にプッシュされません(そして、場所も秘密ではありませんが、直接URLまたはoriginリポジトリとして自動的に定義された構成済みのリモート名を使用してコマンドラインであなたが言うことに基づいています元々複製された)。

于 2013-02-26T08:10:38.690 に答える