我想在我的package.json中添加一个git存储库。
{
"dependencies": {
"dep1": "git+https://url1",
"dep2": "git://url1"
}
当我运行dep1时,它工作,dep2失败。
git+https
和git://
之间的差异是什么?
这是一样的结果吗?
我需要在.git中添加一些内容吗?
答案 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+http
到git
,那么如果您安装了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>
是git
,git+ssh
,git+http
,git+https
或git+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。