【问题标题】:What's the purpose of the colon in this git repository url?这个 git 存储库 url 中冒号的目的是什么?
【发布时间】:2016-08-02 19:42:13
【问题描述】:

请原谅我的无知;我是 Git 新手,不知道在哪里寻找更好的答案,但是以下 url 中“example.com”之后的冒号的目的是什么(它指向我的 mediatemple 服务器上的 git 存储库)?

git remote add repo_name ssh://serveradmin%example.com@example.com:/home/45678/domains/git.example.com/html/example.git

【问题讨论】:

  • 看起来像一个无意义的冒号。通常后面会跟着端口号,但如果没有数字,则应使用 ssh (22) 的默认端口号。
  • 你的想法和我想的一样,但这并不是毫无意义的,在许多这些 git URL 路径中都有冒号,我直接从 mediatemple 文档中复制了这个。我认为它所做的事情与通常的端口号指示器不同。如果我错了,请告诉我。
  • 我喜欢那些不是的 URL——它显然是无效的,因为 "%ex" 不是一个有效的百分比转义。他们使用 :// 但不遵循通用语法的那一点只是一个小烦恼,可能源于ssh user@host:path 语法(其中路径是绝对的或相对于您的主目录)。
  • 您确定 % 无效吗?我使用了两个在登录说明中使用 % 而不是 @ 的主机。
  • 您可能已经找到答案:'ssh user@host:path' 是标准 ssh 语法吗?其他评论者提出了这一点,即它是专门的 ssh 语法。我将查找文档以查看是否是这种情况。

标签: git colon


【解决方案1】:

这个语法实际上是错误的,但它有点像你可以在 git URL 中使用的scp 风格的语法,它将主机名与该主机上的路径分开。 git clone documentation 中列出了用于指定 git URL 的选项。在您的情况下,您可能需要以下之一:

 serveradmin%example.com@example.com:/home/45678/domains/git.example.com/html/example.git

... 或:

 ssh://serveradmin%example.com@example.com/home/45678/domains/git.example.com/html/example.git

无论哪种情况,用户名都是serveradmin%example.com,主机名是example.com,该主机上的路径是/home/45678/domains/git.example.com/html/example.git

【讨论】:

  • 等等,语法到底哪里错了?你的第一个例子看起来就像我发布的那个。随意假设我什么都不知道。并告诉我更多关于“可以在 git URL 中使用的 scp 样式语法”的信息——我不知道那是什么。如果你能指出我的文档,那会有所帮助。当我最初询问有关这些冒号的问题时,我认为它与特定于 git 或特定于 ssh 的语法有关;我想我可能是对的,但到目前为止还没有一个明确的答案。 (无论如何,我感谢所有答案。)
  • 我的第一个例子开头没有ssh://,而你的例子有。在没有 ssh:// 的版本中,您只能使用:。关于可用于引用 git 存储库的 URL 的唯一文档是我在答案中链接到的 git clone 手册页。 scp 是一个命令行工具,用于通过 SSH 复制文件,恰好需要您将远程系统上的文件位置指定为 user@host:filename。由于scp 被广泛使用并为人们所熟悉,git 允许您使用它来指定存储库以及严格的 URL 版本。
  • 感谢您的澄清。在使用 git 之前我从未使用过 scp,所以对我来说并不熟悉;我很欣赏你的解释。我接受这个作为答案。
【解决方案2】:

here 所述,它将(服务器的)主机名与(到仓库的)路径分开。

【讨论】:

  • 感谢您的链接。它可能会提出比它解决的问题更多的问题(对我来说)。如果冒号是 URI 方案的一部分,并且 URI 方案,如链接中所述,由:<scheme name> : <hierarchical part> [ ? <query> ] [ # <fragment> ] 组成,那么方案名称在哪里?我认为 ssh: 可能是这里的方案名称。通常主机名与路径用斜杠分隔,对吗?正如@harpo 上面提到的,我习惯于在端口号之前看到一个冒号,但是一个独立的冒号对我来说是新的。你告诉我这不是 git 的东西,而是 URI 的标准元素?
  • 查看 git-clone 手册页,它似乎实际上可能是 git kernel.org/pub/software/scm/git/docs/git-clone.html 支持的类似 scp 的语法
  • 我认为你的回答可能是正确的,但你的解释(链接到一个包含很多关于 URI 的一般信息的页面)比有用更令人困惑。
【解决方案3】:

冒号是表示在定义您希望与之交互的存储库之后 git 字符串。

编辑:很好发现

我们可以看到远程添加如下:

git remote add [-t <branch>] [-m <master>] [-f] [--tags|--no-tags] [--mirror] <name> <url>

你的例子是:

git remote add repo_name ssh://serveradmin%example.com@example.com:/home/45678/domains/git.example.com/html/example.git

'name' 是'repo_name'

而 URL 是大字符串

ssh://serveradmin%example.com@example.com:/home/45678/domains/git.example.com/html/example.git

当我们看到它的开头有 ssh 协议定义时,这一点就更加明显了。

在 URL 中,您可以定义冒号而不使用后续端口值,并且该协议的默认端口通常用作端口号,这似乎就是这里发生的情况。

因此标记问题并标记 harpo 的评论

【讨论】:

  • 我想这可能是答案,但是如果没有字符串是什么意思呢?
猜你喜欢
  • 2016-05-29
  • 1970-01-01
  • 1970-01-01
  • 2020-05-21
  • 1970-01-01
  • 2015-03-18
  • 2016-10-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多