Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
“为什么?”;“git克隆”;在传递本地文件时打包对象数据库:///url?_Git_Path_Git Clone_File Uri_Local Files - Fatal编程技术网

“为什么?”;“git克隆”;在传递本地文件时打包对象数据库:///url?

“为什么?”;“git克隆”;在传递本地文件时打包对象数据库:///url?,git,path,git-clone,file-uri,local-files,Git,Path,Git Clone,File Uri,Local Files,下面描述了为了重现观察到的行为而要执行的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" [

下面描述了为了重现观察到的行为而要执行的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
使用本地文件克隆源存储库:///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.
根据,带有三个斜杠的文件url意味着本地资源

但是,当通过本地
文件://
url进行克隆时,对象数据库会在传输(复制?)之前进行打包。当源存储库的位置表示为本地路径时,情况并非如此

考虑到源repo和目标repo都托管在
localhost

git clone manual中,为什么git的行为方式不同:

对于git本机支持的本地存储库,可以使用以下语法:

  • /路径/to/repo.git/
  • file:///path/to/repo.git/
这两个语法基本上是等价的,除了前者意味着——局部选项


因此,当您使用
文件://
时,它并不意味着您必须明确添加的
--local
克隆。

非常感谢您的回答。不幸的是使用
git克隆-lfile:///d:/temp/main
git克隆--本地file:///d:/temp/main
仍然处理并传输打包文件。你能重现这种行为吗?