当我克隆存储库时,这两个网址之间有什么区别吗?
没有.git扩展名:
git clone http://foo/repo
使用.git扩展名:
git clone http://foo/repo.git
答案 0 :(得分:36)
惯例是 .git 扩展名应该用于裸存储库,并且不带有工作树的目录。 Git并不在乎,但有一些方便的方法可以使它相当透明。
例如,如果您有一个名为 /tmp/foo.git 的存储库并且您调用了git clone file:///tmp/foo
,Git将首先尝试查找 / tmp / foo 。如果它不存在,它将尝试 /tmp/foo.git 。
这不反之亦然。如果您的目录名为 / tmp / foo ,并且您尝试从 /tmp/foo.git 克隆,则会被告知:
致命:'/ tmp / foo.git'似乎不是git存储库
大多数HTTP / HTTPS功能来自您的Web服务器,而不是Git。即使您使用Smart HTTP transport,我怀疑大多数魔法都发生在服务器端的LocationMatch指令中。除了理论之外,对GitHub的一些快速测试表明它在这方面与SSH和Git协议的工作方式相同,但你的里程可能会因其他网络服务器而异。