【问题标题】:What does the ".git" mean in a git URL?git URL 中的“.git”是什么意思?
【发布时间】:2011-12-31 06:16:54
【问题描述】:

我在 foo 中设置了一个 git repo

cd
mkdir foo
cd foo
git init

现在我想远程引用它

git clone git+ssh://me@somemachine/home/me/foo.git

fatal: git remote error '/home/me/foo.git' does not appear to be a git repository

所以我把 .git 去掉,它就可以工作了。但几乎我看到的每个例子最后都有“.git”。那个“.git”是什么意思?

另外,ssh://... 和 git+ssh://... 有什么区别(从意义和实际意义上来说)

【问题讨论】:

标签: git


【解决方案1】:

那个“.git”是什么意思?

.git 在 git 存储库文件夹末尾只是一个命名约定,通常意味着该文件夹是服务器而不是客户端。我相信这是由存储库是否裸露决定的(裸存储库没有工作目录)。克隆 URL 只是指向一个文件夹,如果实际文件夹末尾有 .git,则添加它。否则,不要。

另外,ssh://... 和 git+ssh://... 有什么区别(无论是从意义还是实际意义上)

实际上,它们几乎相同。实际上,他们使用不同的协议连接到服务器。 ssh:// 使用特定用户打开与服务器的 SSH 连接并在服务器上运行 git 命令(通常服务器会通过将用户的 shell 设置为 /usr/bin/git-shell 来限制命令)。 git+ssh:// 表示服务器在本地运行git daemon,客户端需要先打开 SSH 连接才能与守护进程交互。

【讨论】:

  • 另外作为一个小提示,git+ssh:// 几乎从未使用过,并且根据其他答案,已被弃用并从当前版本的 git 中删除。
  • 文件夹是服务器而不是客户端...什么?!
  • 我相信我的意思是它是一个纯粹的 repo 副本,其唯一目的是共享(在 git 现在几乎专门用于更集中的服务器/客户端设置中),而不是具有已签出 repo 的人员网络,这些人相互配置为遥控器(文件夹名称通常不以“.git”结尾)
  • 查看我当前使用默认设置签出的存储库,在使用 git 2.12.2.windows.2 在 Windows 和使用 git 2.7.4 的 Ubuntu 上进行克隆期间,.git 后缀被剥离。我的意思是在~ 中克隆时https://github.com/foo/bar.git 形式的repo 将创建目录~/bar/ 而不是~/bar.git/。我从 Github、Gitlab 和 BitBucket 观察到这种行为,如果这恰好是服务器控制的东西
【解决方案2】:

在名称以.git 结尾的目录中创建裸 git 存储库是一种常见(但肯定不是通用)约定。这就是您通常会在存储库 URL 的末尾看到 .git 的原因。

我不确定git+ssh 方案 - 实际上我在 git 手册页中找不到对它的引用。根据Eclipse forums,该协议已被删除,取而代之的是普通的旧ssh。 (Eclipse 论坛当然不是关于 git 的官方信息来源,但这是有道理的。反正我不知道应该有什么区别。)

【讨论】:

    【解决方案3】:

    .git 后缀只是一种约定,表示所讨论的目录是一个裸 git 存储库(即,其中没有工作副本的存储库)。这实际上不是必需的。

    至于git+ssh://,根据the git-fetch manpage,是不允许的:

    Git 原生支持 ssh、git、http、https、ftp、ftps 和 rsync 协议。以下语法可以与它们一起使用:

    • ssh://[user@]host.xz[:port]/path/to/repo.git/
    • git://host.xz[:port]/path/to/repo.git/
    • http[s]://host.xz[:port]/path/to/repo.git/
    • ftp[s]://host.xz[:port]/path/to/repo.git/
    • rsync://host.xz/path/to/repo.git/

       另一种类似 scp 的语法也可以与 ssh 协议一起使用:>

    • [user@]host.xz:path/to/repo.git/

    【讨论】:

      【解决方案4】:

      .git 没有特殊含义,需要添加的天气取决于repo在服务器端的位置,有无.git。

      有时带有 .git 的 repo 暗示它是一个裸 repo。

      【讨论】:

        猜你喜欢
        • 2012-03-03
        • 1970-01-01
        • 1970-01-01
        • 2012-12-22
        • 1970-01-01
        • 2022-01-22
        • 1970-01-01
        • 2011-12-09
        相关资源
        最近更新 更多