git@github.com:...和https://github.com/...之间的区别是什么?

6

我最近尝试构建一个项目,其中有各种依赖项声明为Github链接。这些链接是公共Github存储库和我公司的私有Github企业存储库的混合。

其中一些链接的格式如下:

https://github.com/project/repo.git

有些格式是这样的

git@github.com:project/repo.git

这些格式之间到底有什么区别,哪种格式适用于什么样的目的?


git:https: 前缀指定了协议;请参阅 https://en.wikipedia.org/wiki/Uniform_Resource_Locator。`git:` 协议指示 Git 使用内置的 Git 协议。https: 协议指示 Git 使用通过 libcurl 的 SSL 加密的 HTTP。ssh: 前缀指示 Git 使用 ssh,而 user@host:pathssh://user@host/path 的缩写形式。 - torek
2个回答

7

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 协议将使用你的私钥与代码库进行验证,因此你不需要每次都输入密码。


那么从公共Github存储库克隆时,没有理由优先选择ssh格式吗?我意识到,在没有设置公共ssh密钥的情况下使用ssh格式可能会在某些机器上引起一些问题,例如git在克隆之前抛出几个额外的提示。这可能会导致自动克隆依赖项的过程崩溃。 - Sergey Ovchinnik

3

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/


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接