Git:从url.git和url / .git克隆之间的区别

时间:2016-12-20 14:11:44

标签: git github

我总是使用以下网址克隆我的存储库:

https://github.com/joaquinlpereyra/twitterImgBot.git

但是我发现你也可以通过将clone指向.git文件夹来克隆repos,如下所示:

$ git clone http://examplerepo.com/.git/

但这对github不起作用,但我从经验中知道,这可以在至少一个HTTP非Github git存储库上运行,同时尝试执行以下操作:

$ git clone http.//examplerepo.com 

根本不起作用。

任何人都有关于此.git vs /.git差异的信息?我已经尝试过搜索但是我没有看到克隆/.git文件夹的任何地方,除了git reference的最后一个例子,它给出了以下示例:

$ git clone --bare -l /home/proj/.git /pub/scm/proj.git

但没有关于它为什么直接克隆.git文件夹而不是/ home / proj的信息被遗漏了。

我很感激任何信息或指示!谢谢。

2 个答案:

答案 0 :(得分:2)

Git支持一些不同的协议。使用哪一个取决于几个因素,例如git是否在远程端运行(智能与哑术),或者是否可以列出目录内容(例如本地文件或FTP或WebDAV与HTTP一般情况下)

如果您只是使用普通的HTTP服务器,那么只要运行git-update-server-info来帮助它,git就可以使用愚蠢的HTTP传输从中获取(参见gitrepository-layout)。您必须在网址路径中明确包含/.git/

GitHub当然正在使用智能HTTP传输,这与最后的.git/无关是可选的。 (GitHub doesn't support dumb http transport。)

智能HTTP协议可以动态计算包文件,也可以推送到。请参阅http-protocol

对于克隆本地路径,结尾的/.git/是可选的,因为git可以遍历本地文件系统来查找它。

答案 1 :(得分:0)

克隆对象没有差异
两个URL都克隆相同的内容
只有.git / config中的[remote“origin”]部分设置为不同,但这是正常的:

onCreate

VS

onViewCreated

在没有.git

的情况下克隆它
[remote "origin"]
     url = ssh://localhost:29418/test/.git/

这三个人都在做同样的事情