git+ssh 在像 git+ssh://git@github.com/xxx.git 这样的 npm repo 路径中是啥意思

     2023-03-07     161

关键词:

【中文标题】git+ssh 在像 git+ssh://git@github.com/xxx.git 这样的 npm repo 路径中是啥意思【英文标题】:What does git+ssh mean in an npm repo path like git+ssh://git@github.com/xxx.gitgit+ssh 在像 git+ssh://git@github.com/xxx.git 这样的 npm repo 路径中是什么意思 【发布时间】:2020-03-18 17:22:02 【问题描述】:

我看到了一个 npm 存储库,它在 package.json 中被称为 git+ssh://git@github.com/xxx.git。我知道这是 ssh 协议,但我不知道 git+ssh 在克隆 repo 时会做什么,我只使用git@github.com/xxx.git。我用谷歌搜索,但没有找到任何结果。

【问题讨论】:

【参考方案1】:

当通过 git 托管 npm 包时,npm 还需要知道使用哪种传输协议将包文件从 repo 传输到客户端。为此,存在以下选项:ssh、https、http、文件(请参阅https://docs.npmjs.com/cli/install)。

npm 的创建者决定将此信息放在协议名称中,并用+ 符号分隔信息,这样它就更具有示意性。因此,当npm install 遍历您的依赖项并看到与git+ssh 的依赖项时,它知道它将通过ssh 连接到repo,然后使用您本地的git 二进制文件在本地签出项目文件。

我猜他们也可以将协议命名为gitwithssh,如gitwithssh://git@github.com/xxx.git,但git+ssh 看起来更简洁且逻辑上分开,因此更容易通过正则表达式进行解析。

这里是 npm 源代码中实际负责将协议信息拆分为type(=git)和实际协议(例如ssh)的部分:https://github.com/npm/npm-package-arg/blob/v7.0.0/npa.js#L221

我只使用 git@github.com/xxx.git。

您不能使用这种格式将包注册为 npm 的依赖项。尝试执行npm i git@github.com/xxx.git - 它不起作用。这种格式只能用于例如通过git clone

但是,您可以在使用 ssh 协议作为前缀时使用此格式:ssh://git@github.com/xxx.git。这实际上是 npm 在幕后使用的“git+ssh”的“标准化”形式(另请参阅 https://github.com/npm/normalize-git-url 如何将您的 git+ssh://... 转换为 ssh://git@...)。

【讨论】:

当我意识到我的问题与 npm 相关时,我找到了docs.npmjs.com/cli/install,它描述了可用于从 git 远程 URL 安装包的协议。希望对您有所帮助。【参考方案2】:

从 NPM 的角度来看,这类似于任何其他远程设置。许多依赖管理器支持通过 SSH 使用 Git。在底层,这会驱动 Git 通过 SSH 连接。最终结果是 NPM 克隆存储库并将其安装到您的 node_modules 目录中。

当 Git 与远程存储库通信时,它使用 SSH 启动两个程序之一:git-upload-packgit-receive-pack。存储库作为这些命令的一个选项提供。 SSH 使用一种隧道机制来使用pkt-line 协议向这些远程程序发出命令。有关该协议的更多详细信息,请参阅Git source。

【讨论】:

Windows 的 .ssh/config 文件 (git)

】Windows的.ssh/config文件(git)【英文标题】:.ssh/configfileforwindows(git)【发布时间】:2014-12-0316:42:56【问题描述】:我一直在寻找有关如何使用多个ssh密钥的解决方案,我发现它可以与.ssh目录中的配置文件一起使用,但它不适用于Win... 查看详情

ssh git clone 超时

】sshgitclone超时【英文标题】:sshgitclonetimesout【发布时间】:2020-04-1809:43:05【问题描述】:请帮忙我正在尝试通过SSH与linuxubuntu服务器上的git/github进行通信,同时还有一个不同的SSH端口(不是22)。当我尝试gitclone时,我正在使... 查看详情

命令 '['git' 'clone', '--recurse-submodules', '--', 'ssh://git@git/b2b/py_client.git'] 返回非零退出状态 128

】命令\\\'[\\\'git\\\'\\\'clone\\\',\\\'--recurse-submodules\\\',\\\'--\\\',\\\'ssh://git@git/b2b/py_client.git\\\']返回非零退出状态128【英文标题】:Command\'[\'git\'\'clone\',\'--recurse-submodules\',\'--\',\'ssh://git@git/b2b/py_client. 查看详情

git分布式的理解----简单服务端搭建

  Git是分布式的,并没有服务端跟客户端之分,所谓的服务端安装的其实也是git。Git支持四种协议,file,ssh,git,http。ssh是使用较多的,下面使用ssh搭建一个免密码登录的服务端。  1、提前安装git跟sshserver;  2、 ... 查看详情

如何从 ssh git 存储库 url 导入 gitlab 中的存储库?

】如何从sshgit存储库url导入gitlab中的存储库?【英文标题】:Howimportrepositoryingitlabfromasshgitrepositoryurl?【发布时间】:2019-09-3020:50:37【问题描述】:我想用ssh://在gitlab中导入一个项目我在同一个网络上:安装在raspebrry上的gitlabsynol... 查看详情

带有私钥和公钥的 SSH GIT 克隆

】带有私钥和公钥的SSHGIT克隆【英文标题】:SSHGITClonewithPrivateandPublicKeys【发布时间】:2015-07-1118:13:33【问题描述】:我得到了以下从服务器克隆git存储库的详细信息。地址:xx.xxx.xxx.xxx端口:xx用户:用户-----开始RSA私钥--Proc-Typ... 查看详情

升级到 Server 4.0 和 Xcode 6.1,SSH git 遥控器坏了

】升级到Server4.0和Xcode6.1,SSHgit遥控器坏了【英文标题】:UpgradedtoServer4.0andXcode6.1,SSHgitremotesbroken【发布时间】:2014-11-2516:36:39【问题描述】:在升级到OSXServer4.0和Xcode6.1后,我无法再像以前那样访问我的git存储库:gitclonessh://exam... 查看详情

解决macosventura使用ssh/git等无法正常使用的问题(代码片段)

关键词:macOSVentura、Ventura、SSH、git、Permissiondenied若移动端访问不佳,请使用–>GithubPage版问题描述升级到macOSVentura后,无法使用SSH命令登入服务器,开启日志后,可能会看到nomatchinghostkeytypefound的报错信息... 查看详情

管理git生成多个sshkey及报错badconfigurationoption解决方法-2018-10-06

...外,可用通过3.一点说明以上的我采用的是oschina的码云和github的两种kye的结合体,其中每段最后的IdentityFile跟着是你自己sshkey的名字,不要搞错了。最后就是测试咯oschina的测试方法ssh-Tgit@git.oschina.net;成功收到的回复为“Welcomet... 查看详情

管理git生成多个sshkey及报错badconfigurationoption解决方法-2018-10-06

...外,可用通过3.一点说明以上的我采用的是oschina的码云和github的两种kye的结合体,其中每段最后的IdentityFile跟着是你自己sshkey的名字,不要搞错了。最后就是测试咯oschina的测试方法ssh-Tgit@git.oschina.net;成功收到的回复为“Welcomet... 查看详情

git常用命令

一、GIT基础:1、取得项目的仓库gitinitgitaddFILESgitclone[https/http、ssh、git] 2、记录每次更新到仓库gitstatusgitstatus-s或gitstatus--short.gitignore gitdiff 【当前工作目录与暂存】gitdiff--staged    【暂存与上次提交快 查看详情

pythonfabric和ssh-agent,请参阅https://www.leepa.io/2010/11/09/fabric-and-ssh-agent-aka-running-git-in-f(

查看详情

git基础命令(代码片段)

git init :初始化一个仓库,也就是新建一个仓库git clone: 克隆一个仓库,就是复制一份代码过来,通过http、ssh、git协议,可以在URL后加一个参数 当做本地的仓库名/目录名  如  gitclone URL &nb... 查看详情

Heroku 上的 NPM 私有 git 模块

】Heroku上的NPM私有git模块【英文标题】:NPMprivategitmoduleonHeroku【发布时间】:2012-06-0720:19:27【问题描述】:我正在尝试将我的应用程序部署到Heroku,但是我依赖于使用一些私有git存储库作为模块。我这样做是为了项目之间的代码... 查看详情

在 xcode 中更改 git 的用户名

】在xcode中更改git的用户名【英文标题】:Changingusernameforgitinxcode【发布时间】:2013-12-0414:11:18【问题描述】:通过ssh://git@server/.../.../project.git访问我们的git存储库。团队中的每个人都创建了自己的私钥,并将其通过电子邮件发... 查看详情

GitLab 所有存储库 ssh 克隆 url 显示错误的路径

】GitLab所有存储库ssh克隆url显示错误的路径【英文标题】:GitLaballrepositorysshcloneurlshowswrongpath【发布时间】:2020-05-3004:10:52【问题描述】:GitLabWeb所有存储库SSH克隆URL显示路径错误。路径错误:ssh://git@ssh.gitlab.domain.com:443/test_group... 查看详情

git代码冲突,导致分支pull下载不了解决办法?

开发找我说git的自动化上线用不了了,使用git下载分支然后报错如下:git pull origin shk-masterFrom ssh://git.ihangmei.com:65022/H5-web/portal_train * branch         查看详情

Bamboo git checkout 工作时间过长

】Bamboogitcheckout工作时间过长【英文标题】:Bamboogitcheckoutworkstoolong【发布时间】:2013-09-0914:40:11【问题描述】:我在使用Bamboo中的gitcheckout工具时遇到了一些问题。它的工作时间太长了。例如我有两个回购。我可以在5-10分钟内... 查看详情