为什么某些存储库URL以.git结尾而其他存储库URL不以?

时间:2012-06-17 02:50:37

标签: git url github git-clone

当我克隆存储库时,这两个网址之间有什么区别吗?

  1. 没有.git扩展名:

    git clone http://foo/repo
    
  2. 使用.git扩展名:

    git clone http://foo/repo.git
    

1 个答案:

答案 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协议的工作方式相同,但你的里程可能会因其他网络服务器而异。