1

Git とプロジェクトの VCS を使い始めました。を使用してリモートリポジトリを作成しました

git init --bare 

/codes-repo で、変更をローカル リポジトリからそこにプッシュします。次に、プロジェクト ファイルをそこから /var/www/project に移動して、 http://.... からアクセスできるようにします。しかし、/codes-repo にコピーするプロジェクト ファイル (index.php、css/、...) が表示されません。そこには git ファイルとフォルダーしかありません。彼らはどこにいますか??

4

3 に答える 3

4

ベア リポジトリにはチェックアウトがありません。つまり、ベア リポジトリはコミット情報のみを保持します。リポジトリ フォルダ内のディスク上の実際のファイルのコピーは保持しません。

ベア リポジトリはプッシュまたはプルのみ可能です。ファイルを取得するには、ベア リポジトリを (非ベア クローンとして) クローンし、クローンでチェックアウトを実行することをお勧めします。

別のオプションとして、勇気がある場合は、ベア リポジトリを非ベア リポジトリに変換することもできます (ベア git リポジトリを通常のリポジトリ (インプレース) に変換するにはどうすればよいですか? ) 。

于 2012-12-03T11:22:53.157 に答える
2

ベア リポジトリからファイルをコピーするには、git archive を使用できます。

GIT_DIR=~/BARE_REPO git archive --format tar master | tar xvf -

git archive コマンドは、ターゲット コミット (たとえば marter) を tar 形式に変換し、標準出力に送信します。tar コマンドにパイプして、すぐに抽出できます。

もう 1 つの方法は、リポジトリをチェックアウトすることです。

git checkout ~/BARE_REPO myproject

ただし、このディレクトリ全体を Web サーバーに配置するのは適切ではありません。そうしないと、.git ディレクトリ全体にアクセスできます。誰でもあなたのソース コードと完全なコミット履歴を取得できます (もちろん、これらのアクセスは .htaccess や nginx の設定でブロックできます)。

于 2012-12-03T11:28:32.277 に答える
1

ベア リポジトリには、いわゆる作業ディレクトリがないため、ファイル システム オブジェクトはありません。

Git は引き続きコンテンツ、コミット、タグなどを追跡しますが、それらをどこかにまとめて保存します。非裸のリポジトリでgit checkoutを実行すると、git はインデックス (リポジトリ内のファイル) を更新して、引数として指定されたツリーのようなオブジェクトを反映します。

于 2012-12-03T11:26:26.440 に答える