3

観察された動作を再現するために実行する bash コマンドを次に示します。これらは実行されていますがmsysgit、結果は *nix 環境でも同様であると思われます。

ソース リポジトリをセットアップする

$ mkdir main && cd main
$ git init .
Initialized empty Git repository in d:/temp/main/.git/
$ echo a > a.txt
$ git add . && git commit -m "Initial commit"
[master (root-commit) e1ec355] Initial commit
 1 files changed, 1 insertions(+), 0 deletions(-)
 create mode 100644 a.txt

ローカルの file:/// url を使用してソース リポジトリのクローンを作成します。

$ cd ..
$ mkdir clonefromfileurl && cd clonefromfileurl
$ git clone file:///d:/temp/main
Cloning into 'main'...
remote: Counting objects: 3, done.
Receiving objects: 100% (3/3), done.
remote: Total 3 (delta 0), reused 0 (delta 0)

ローカル ファイル パスを使用してソース リポジトリを複製する

$ cd ..
$ mkdir clonefrompath && cd clonefrompath
$ git clone /d:/temp/main
Cloning into 'main'...
done.

Wikipediaによると、トリプル スラッシュを含むファイル URL はローカル リソースを意味します。

ただし、ローカルfile:///URL を介してクローンを作成すると、オブジェクト データベースは転送 (コピー?) される前に圧縮されます。これは、ソース リポジトリの場所がローカル パスとして表現されている場合には当てはまりません。

ソースリポジトリとターゲットリポジトリの両方がホストされていることを考えると、git の動作が異なるのはなぜlocalhostですか?

4

1 に答える 1

2

git clone マニュアルから:

git でネイティブにサポートされているローカル リポジトリの場合、次の構文を使用できます。

  • /path/to/repo.git/
  • file:///path/to/repo.git/

これら 2 つの構文は、前者が --local オプションを意味することを除いて、ほとんど同じです。

したがって、を使用している場合、明示的に追加する必要があるクローンをfile:///意味するものではありません。--local

于 2012-01-17T17:34:45.877 に答える