什么是不同的git://和git + https://?

时间:2018-02-07 15:14:37

标签: node.js git

我想在我的package.json中添加一个git存储库。

{
    "dependencies": {
        "dep1": "git+https://url1",
        "dep2": "git://url1"        
}

当我运行dep1时,它工作,dep2失败。 git+httpsgit://之间的差异是什么? 这是一样的结果吗? 我需要在.git中添加一些内容吗?

4 个答案:

答案 0 :(得分:3)

您可以使用几种协议来引用package.json中的依赖项:

<强> GIT中, 混帐+ SSH, 混帐+ HTTP, git + https 和 的的git +文件

与往常一样,所有协议都有利弊。

不同之处在于git:您使用的是本机git协议,git+https:您正在通过HTTPS访问git repo(您也可以使用SSH代替HTTPS例如,但服务器需要支持它。)

git 协议非常快,但缺少身份验证或加密。

git + https 非常适合公共回购,它适用于代理和防火墙,但如果您需要身份验证,则需要提供用户名和密码。

git + ssh 适用于私有存储库,因为它使用您的ssh公钥进行身份验证,无需输入密码。

git + file 用于在您自己的文件系统上引用repos,通常是本地文件,但它也可以用于具有SMB或NFS的远程文件。

现在,如果您想要更改 git+httpgit,那么如果您安装了git服务器并且正在监听,它将仅 同一个主机并提供​​相同的回购。

就像在网址中将http:更改为ftp:一样 - 如果您在同一主机上安装了FTP服务器,那么它只能 提供相同的文件

底线是您只能使用服务器支持的协议

参见文档:

答案 1 :(得分:1)

参考问题https://askubuntu.com/questions/858711/what-is-the-meaning-of-githttps-github-com

“这意味着连接可以使用http和git协议。协议解释为here。”

基本上你只是添加了git使用HTTPS传输数据的能力。更多细节包含在链接中。

答案 2 :(得分:1)

你的dep1是https协议和git协议

dep1": "git+https://url1"

你的dep 2只是git协议

dep2": "git://url1:

您能够成功使用dep1而不是dep2的原因是您使用通过https进行身份验证的Web服务器。您似乎没有处理git服务器,因此dep2是多余的,可以删除。

不重新发明轮子或半剽窃别人。以下是感兴趣的人的一些好读物。

如果感兴趣,这是git协议的长度读取。 https://git-scm.com/book/en/v2/Git-on-the-Server-The-Protocols

这提供了对协议的理解。 https://gist.github.com/grawity/4392747

答案 3 :(得分:1)

它向NPM包管理器表明您希望使用git,其存储库URL为https://url1

  

<protocol>gitgit+sshgit+httpgit+httpsgit+file之一。

https://docs.npmjs.com/files/package.json#git-urls-as-dependencies

如果您直接与git对话,您只需说git clone https://url1,但NPM可以使用其他协议(如file:https:)通过纯HTTPS下载tarball。其他包管理器,例如pip support this pattern as well