我最近尝试构建一个项目,其中有各种依赖项声明为Github链接。这些链接是公共Github存储库和我公司的私有Github企业存储库的混合。
其中一些链接的格式如下:
https://github.com/project/repo.git
有些格式是这样的
git@github.com:project/repo.git
这些格式之间到底有什么区别,哪种格式适用于什么样的目的?
我最近尝试构建一个项目,其中有各种依赖项声明为Github链接。这些链接是公共Github存储库和我公司的私有Github企业存储库的混合。
其中一些链接的格式如下:
https://github.com/project/repo.git
有些格式是这样的
git@github.com:project/repo.git
这些格式之间到底有什么区别,哪种格式适用于什么样的目的?
git可以运作在各种不同的协议上。
http(s) 协议例子如下:https://github.com/project/repo.git
它使用端口 443 (或者 http 的 80),允许读写操作,可以用密码进行验证(例如在 Github 上,它允许匿名读取但需要密码才能写入),并且防火墙友好(不需要任何基础设施配置)。
ssh 协议例子如下:git@github.com:project/repo.git
它使用端口 22,允许读写操作,需要 SSH 密钥验证。如果你向 Git 提供了你的公共 SSH 密钥,那么 SSH 协议将使用你的私钥验证 Git,因此你不需要提供用户名和密码。
当你使用 git push 命令时,由于 SSH 协议将使用你的私钥与代码库进行验证,因此你不需要每次都输入密码。
https://github.com/project/repo.git
这是HTTPS URL。
git@github.com:project/repo.git
这是SSH URL。
两者都可以用于进行git文件传输,但Github推荐使用HTTPS URL而不是SSH URL,因为这些URL可以在任何地方使用——即使您在防火墙或代理后面也可以使用。
更多信息请参见https://help.github.com/articles/which-remote-url-should-i-use/。
git:
或https:
前缀指定了协议;请参阅 https://en.wikipedia.org/wiki/Uniform_Resource_Locator。`git:` 协议指示 Git 使用内置的 Git 协议。https:
协议指示 Git 使用通过 libcurl 的 SSL 加密的 HTTP。ssh:
前缀指示 Git 使用 ssh,而user@host:path
是ssh://user@host/path
的缩写形式。 - torek