【问题标题】:Why do some repository URLs end in .git while others don't?为什么有些存储库 URL 以 .git 结尾,而另一些则没有?
【发布时间】:2012-06-19 13:55:45
【问题描述】:

当我克隆一个仓库时,这两个 URL 有什么区别吗?

  1. 没有 .git 扩展名:

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

    git clone http://foo/repo.git
    

【问题讨论】:

  • 如果你指的是 Github URL,.git 是可选的
  • 您可能对this 的回答感兴趣。特别是 reponame.git 的命名约定通常是为裸存储库保留的......

标签: git url github git-clone


【解决方案1】:

约定是 .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 协议的工作方式相同,但您的里程可能在其他 Web 服务器上有所不同。

【讨论】:

猜你喜欢
  • 2014-11-30
  • 1970-01-01
  • 1970-01-01
  • 2022-09-28
  • 2016-12-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-13
相关资源
最近更新 更多