2

警告: 私は GIT を初めて使用します!!

git をローカル マシンにインストールしました。ネットワーク上のサーバーにもインストールしました。サーバー上でC:\git、コードを格納するために作成し、そのディレクトリを共有しました。だから、私はした:

$cd C:\git
$git init --bare

「gitサーバー」の共有ディレクトリを指すように、ローカルマシンに新しいリモートをセットアップしました

$git remote add shared "//shared/path/to/git/folder"
$cd C:\path\to\my\source\code
$git init
$git add -A
$git commit -m "initial push"
$git push shared master
$git checkout -b test
$git push shared test

これですべての作業が完了し、サーバーに戻ったときに、ソース コードのサーバー コピーが表示されることを期待していますが、表示されません。私は git のポイント全体を見逃していますか、それとも何か間違っていますか?

4

3 に答える 3

4

リポジトリを初期化しましbareた。ソースコード構造はありません。「作業ツリー」はまったく含まれていません。代わりに、メイン ディレクトリ自体に .git サブディレクトリのすべてのコンテンツが含まれています。

したがって、サーバーに作業コピーが必要な場合はclone、裸のレポからコードを作成する必要があります。次に、pull最新のコミットで同期します。

于 2012-09-10T19:53:00.510 に答える
3

Git は、ソースを「バイナリ ラージ オブジェクト」(BLOB、略して「オブジェクト」) として保存します。サーバー上のリポジトリのような裸のリポジトリには、複製されたリポジトリにある「作業ツリー」ではなく、これらの BLOB のみが含まれます。これが、サーバー上でファイルを通常どおりに表示できない理由です。objectsそれらはディレクトリ内にあり、コンテンツに基づいて一意の名前が付けられています。この実験を試してください:

git init

echo "hello" > hello.txt

git add hello.txt

dir .git/objects

というサブディレクトリが表示され2aます。そのディレクトリの中を見てください:

dir .git/objects/2a

というファイルが表示され93d00994fbd8c484f38b0423b7c42e87a55d48ます。ディレクトリ名 ( ) とファイル名は、ファイルの内容2aの SHA1 ハッシュ(文字列「hello」、つまり) を構成します。hello.txt

ここで、次のように入力すると:

git cat-file -p 2a93d00994fbd8c484f38b0423b7c42e87a55d48

の内容が表示されますhello.txt。これがベア リポジトリに格納されるオブジェクトですhello.txt。特別な名前が付けられ、圧縮され、objectsディレクトリに置かれています。

リポジトリが大きくなるにつれて、状況は少し複雑になります。コンテンツのサイズとコミットの数が増えると、Git は同様のファイルをまとめ始めるからです。すべての情報はまだそこにありますが、効率を高めるためにさらに圧縮されています。

ファイルが実際にサーバーに保存されていることを確認できるもう 1 つの方法は、別のクローン (裸のクローンではありません!) を作成し、すべてのファイルを含む作業ツリーを作成することです。

于 2012-09-10T20:42:05.960 に答える
1

実際にファイルをコミットする必要があります!

$git add -A
$git commit -m "First commit"
于 2012-09-10T19:49:59.410 に答える