哪个是更智能的 git 协议,ssh 或 git(通过 ssh)或 https 协议?

2024-05-17

哪个高效? SSH:// 或 Git://(文件压缩)

我对 Git 的理解是,git 协议很智能,因为通信两端都有一个协议代理来压缩文件传输,从而通过有效地使用网络带宽来实现更快的克隆。

From 我发现了以下说法。

For secure, authenticated connections, the Git native 
protocol can be tunneled over an SSH connection using
the following URL templates:

ssh: //[user@]example.com[:port]/path/to/repo.git
ssh: //[user@]example.com/path/to/repo.git
ssh: //[user@]example.com/~user2/path/to/repo.git
ssh: //[user@]example.com/~/path/to/repo.git*

我不确定作者所说的是否是真的。他谈到 git 协议通过 SSH 建立隧道。

从我的角度来看,除非连接到 git 端口(代理端口),否则该协议不会生效。而SSH只是一种未压缩的文件传输。但根据作者的说法,如果我们使用 SSH,他说 git 协议是通过它建立隧道的。那么 SSH 在 GIT 中是否更智能呢?

冯·C, 感谢您的回答。 《网络协议(HTTP和Git)一般都是只读的》Git可以制作rw当你运行守护进程时--enable=receive-pack.

以下是我的担忧。
当他们说 git 协议很聪明时,他们的意思是当你执行git clone,Git服务器代理压缩发送回客户端的数据,因此克隆应该更快。在我的用例中,我将在香港设置 Git 服务器,并在圣何塞和其他国家/地区使用它,因此,由于延迟问题,我希望通过网络提高效率。

所以我的问题是当我使用git clone ssh://user@server/reposloc我也能享受到 git 协议的好处吗?根据 O'Reilly 作者的书,他的意思是 git 通过 ssh 建立隧道,那么当我没有在服务器上运行 git 守护进程时,git 协议如何工作。

那么使用 SSh://xyz...它是否同时具有 ssh 和 git 协议的优点?

提前感谢您的回答。


2010-2014 年更新:

ssh 和 https 是等效的,因为 Git 1.6.6+ (2010) 和实现智能http协议 https://stackoverflow.com/a/5265022/6309:

您现在可以使用 ssh 或 https 来对您的存储库进行读/写访问。
你也可以检测您的远程服务器是否支持智能http https://stackoverflow.com/a/18588665/6309.
如果必须使用代理,请添加正确的环境变量。

2015 年第 3 季度,如尤莎·阿莱尤布 https://stackoverflow.com/users/1429432/yousha-aleayoub提及在评论中 https://stackoverflow.com/questions/3248779/which-is-faster-ssh-or-git-protocol/3248848?noredirect=1#comment53080490_3248848:

GitHub“我应该使用哪个远程 URL?” https://help.github.com/articles/which-remote-url-should-i-use/

The https://克隆 URL 可在所有存储库(公共和私有)上使用。
它们很聪明,因此会根据您对存储库的权限为您提供只读或读/写访问权限。

The git-http-backend http://git-scm.com/docs/git-http-backend is the:

简单的 CGI 程序,用于将 Git 存储库的内容提供给通过以下方式访问存储库的 Git 客户端http:// and https://协议。
该程序支持使用智能 HTTP 协议和向后兼容的哑 HTTP 协议的客户端获取,以及使用智能 HTTP 协议的客户端推送。


原始答案(2010年7月):

来自专业 Git 书籍 http://progit.org/book/ch4-1.html:

Git 最常见的传输协议可能是 SSH。
这是因为大多数地方都已经设置了对服务器的 SSH 访问 — 如果没有设置,也很容易做到。

SSH 也是唯一可以轻松读取和写入的基于网络的协议。其他两个网络协议(HTTP 和 Git)通常是只读的,因此即使您将它们提供给普通大众,您仍然需要 SSH 来执行自己的写入命令。

SSH 也是一种经过身份验证的网络协议;由于它无处不在,因此通常很容易设置和使用。

所以它并不比 Git 协议“更智能”,只是对 Git 协议未解决的某些功能的补充协议。

Git 协议的缺点是缺乏身份验证。通常不希望 Git 协议成为项目的唯一访问方式。
一般来说,您会将其与 SSH 访问配对,供少数具有推送(写入)访问权限并让其他人使用的开发人员使用git://用于只读访问

它还需要防火墙访问端口 9418,这不是企业防火墙始终允许的标准端口。在大型企业防火墙后面,这个不起眼的端口通常被阻止。

(这就是为什么在我的店里,我need使用 ssh+git 而不仅仅是 git,即使是读取访问:9418is被屏蔽了……)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

哪个是更智能的 git 协议,ssh 或 git(通过 ssh)或 https 协议? 的相关文章

  • EGit(Eclipse git 插件)可以使用 SSH 密钥代替用户名和密码吗?

    我需要提交的 git 中央存储库是使用 SSH 密钥配置的 我的用户名是jmglov 但是当我执行 git 操作时 例如git clone 我使用这个配置 jmglov kitiara cat git config remote origi
  • 如何在本地快速拉取拉取请求

    在合并拉取请求之前 我想在本地快速拉取请求并运行测试并测试一些内容 我还不想点击 gihub 合并拉取请求 我以为滑轮会有帮助http ejohn org blog pulley http ejohn org blog pulley 但我收
  • hg 或 git 中的两个完整目录/项目之间存在差异?

    我继承了一个最初存储在 CVS 中的项目以及所有修订 我做了相当多的编辑 并且我试图比较我在原始目录中所做的所有更改 关于添加的新文件与旧文件 hg git 是否有某种实用程序可以让我进行树差异或类似性质的操作 也就是说 新添加的文件 删除
  • 如何列出所有 GitHub 用户?

    我正在开发一个网站 需要从 GitHub 爬取所有用户信息 至少是我们网站上的用户 我搜索了 GitHub API 没有找到答案 那么我有什么办法可以完成这份工作吗 我只有用户的电子邮件 我可以通过将电子邮件哈希值与头像 URL 进行比较来
  • 如何将普通的 Git 存储库转换为裸存储库?

    如何将 普通 Git 存储库转换为裸存储库 主要区别似乎是 在普通的 Git 存储库中 你有一个 git存储库内的文件夹 包含构成工作副本的所有相关数据和所有其他文件 在裸露的 Git 存储库中 没有工作副本和文件夹 我们称之为repo g
  • RuntimeError:模型类 django_messages.models.Message 未声明显式 app_label 并且不在 INSTALLED_APPS 中的应用程序中

    我正在尝试使用https github com arneb django messages https github com arneb django messages打包我的消息传递内容并尝试了以下操作 pip install git h
  • Eclipse 与外部 src 和 Web 内容文件夹链接或映射

    首先这不是问题但是我遇到的问题的解决方案浪费了4 5个小时来找到解决方案 请让我知道是否有更好的替代方法来使用 eclipse 项目管理外部 src 文件夹 我正在使用版本控制系统 GIT 来管理我的项目 还使用外部 Git 客户端 Sou
  • 有人熟悉 git 错误“缺少对象 0000000000000000000000000000000000000000 for refs/heads/...”吗?

    我们正在运行 git v1 7 1 并配置了 gitweb 我们也使用 gitolite 进行管理 但我不认为这与这个问题有密切关系 有时我们会在 Apache 日志中收到如下错误 missing object 00000000000000
  • git checkout 到分支需要很长时间

    我使用的是 Ubuntu 17 10 并且使用 git 版本 2 14 1 每当我从 master 创建一个分支并尝试签出它 或从它签出到 master 时 都会花费大量时间 大约几分钟 有时接近 10 分钟 确实 我有几 GB 的数据 但
  • 从 github 中删除子项目提交

    我有两个存储库A and B 我错误地在我的机器上将仓库 B 克隆到了 A 内 我从存储库 B 中删除了所有代码 但是当我在源上从 A 推送并合并代码时 它还显示了子项目提交B在 Github 仓库上 我想从我的 master 上删除子项目
  • 强制 Composer 下载 git repo 而不是 zip

    我对作曲家有一些问题 require php gt 5 3 2 kriswallsmith buzz 0 7 Repo https github com kriswallsmith Buzz tree v0 7 https github c
  • 在 Web 应用程序中显示最新的提交值?

    我有一些 Rails 应用程序 我使用 Git 作为版本控制系统 我使用 GitHub 或 Beanstalk 作为存储库主机 从理论上讲 我想要做的事情非常简单 以某种方式在 Web 应用程序的页脚中显示最新的提交 ID 号 哈希值 这样
  • 将 github 上的包安装到 Spyder 中

    我一直在尝试安装并导入mpl finance来自 github 的包 在我的 Spyder 环境中没有成功 我努力了 pip install e git https github com matplotlib mpl finance git
  • git Blame:合并后正确的作者

    GIT 合并引入了新的提交 这会导致 git Blame 问题 合并的行似乎是由进行合并的开发人员提交的 我可以理解这种情况冲突的变化 因为他解决了冲突 但是有没有办法让非冲突线路不发生这种情况呢 一些 git Blame 的选择 如果没有
  • 未能将一些参考推送至 [email protected]

    当我尝试推送到 Heroku 存储库时收到此错误 我已经设置了autocrlf false在gitconfig中 但这个问题仍然存在 我也尝试过这个解决方案here https stackoverflow com questions 566
  • 在 Azure DevOps 中为 Wix MSI 文件生成 GUID

    我正在为 Web 服务器应用程序和 Sitecore 前端应用程序设置 Wix 安装程序 我的问题并非特定于 Web 服务器或 Sitecore 我的问题是 Wix 以及如何使用它进行持续交付 1 Wix 需要每个文件和产品本身的 GUID
  • 如何在 GitHub Action 中使用不同版本的 PHP 进行测试

    我有一些 PHP 代码 其中包含使用以下命令运行的测试PHPUnit并想对其进行测试GitHub Actions 我在他们的文档中找不到测试 PHP 包的方法 我想使用不同版本的 PHP 进行测试 但他们只有最新的版本7 3安装 您可以添加
  • 将“复制到剪贴板”添加到 GitHub markdown 的简单方法?

    具体来说 我有一些用于安装的代码块 我希望用户能够快速将其复制并粘贴到终端中 我想要一个用于代码块 复制到剪贴板 的按钮 由于 git 克隆 URL 有一个 复制到剪贴板 按钮 我想知道我是否可以利用该按钮 或者如果不能 是否可以将一些相对
  • 如何撤消删除 github wiki 页面的操作?

    我删除了 github 存储库 wiki 上的一个页面 单击该文件的链接现在会将我带到一个新的编辑屏幕 我认为这可能是在我的存储库分支中 但是在 chrome 上以隐身模式点击链接会出现错误 表明我无权编辑此文件 大概是因为我正在尝试创建它
  • 自动同步两个 git 存储库

    是否可以保持同步两个 Github 存储库 远程 的特定文件夹 有两个 github 存储库 repoA 和 repoB 这两个存储库都有名为 ABC 的文件夹以及其他独特的文件夹 如果repoA的文件夹ABC中的任何文件有更新 我想自动更

随机推荐

  • 重复使用相同的卷曲手柄。性能大幅提升?

    在 PHP 脚本中 我对不同的 URL 执行了许多不同的curl GET 请求 一百个 将重复使用来自curl init提高性能 还是与请求的响应时间相比可以忽略不计 我这么问是因为在当前的架构中保持相同的句柄并不容易 交叉发布自我应该关闭
  • 在 ASP.NET 中加密 cookie

    我想在 ASP NET 中加密 cookie 我已关注本文的方法 http www codeproject com KB web security HttpSecureCookie aspx 但它有一个缺点 那就是在内部方法上使用反射 这导
  • 加速美丽汤

    我正在运行本课程网站的抓取工具 我想知道将页面放入 beautifulsoup 后是否有更快的方法来抓取页面 花费的时间比我预期的要长得多 Tips from selenium import webdriver from selenium
  • Qt:如何连接到 SQLite?

    我安装了 SQLite3 解压到 c sqlite 创建了一个数据库 c sqlite mzsales 现在我试图在 QTableView 中显示其内容 QSqlDatabase db QSqlDatabase addDatabase QS
  • scanf() 和 strtol() / strtod() 在解析数字方面的区别

    Note 我完全重新设计了这个问题 以更正确地反映我设置赏金的目的 请原谅这可能造成的与已给出答案的任何不一致 我不想创建一个新问题 因为之前对此问题的回答可能会有所帮助 我正在致力于实现一个 C 标准库 并且对该标准的一个特定角落感到困惑
  • 如何在 Zend Framework 中存储 cron 作业的脚本?

    因为 ZF 的所有 URL 都依赖于 mod 重写 所以我并不清楚应该在哪里存储用于 cron 作业的本地脚本 有人有什么建议 或者有 正式接受 的方式吗 我用模块化目录结构 http framework zend com manual e
  • 如何在函数执行后停止 tkinter?

    我在停止 提要 时遇到问题 cancel 参数似乎对 after 方法没有任何影响 尽管 feed stop 被打印到控制台 我正在尝试使用一个按钮来启动源 另一个按钮来停止源 from Tkinter import Tk Button i
  • 如何使用 JavaScript 检测 CSS 变量支持?

    最新版本的 Firefox 支持CSS 变量 http www w3 org TR css variables 但 Chrome IE 和许多其他浏览器没有 应该可以访问 DOM 节点或编写一个小方法来返回浏览器是否支持此功能 但我还没有找
  • 跟踪 Linux 程序中活跃使用的内存

    我想跟踪各种程序在特定状态下接触了多少内存 例如 假设我有一个图形程序 最小化时 它可能会使用更少的内存 因为它不会重新绘制窗口 这需要读取图像和字体并执行大量库函数 这些对象仍然可以在内存中访问 但实际上并没有被使用 类似的工具top它们
  • 伪元素和 SELECT 标签

    是否select标签允许使用 after选择器是为了在之后创建一个伪元素吗 我在 Mac 上尝试过 Chrome Safari 和 Firefox 但似乎不起作用 这是我使用过的折衷方案 http jsfiddle net pht9d295
  • Spring JMS监听器即使在异常时也会确认

    我正在使用 JMS 向 SQS 队列发送 接收消息 但是即使在使用 client acknowledge 时出现异常 我也无法重新传递消息 如何实现这一目标 我尝试了一个简单的测试 JmsListener destination test
  • 使用 Hibernate 将 Oracle 日期映射到 Java 对象

    我收到消息 文字与格式字符串不匹配 例如 以下是 Java 类中的一些方法 public String getDateTime public void setDateTime String date time 以下是该类的 Hibernat
  • 在 Windows 7 上安装 Visual Studio 2015 社区版

    我尝试在 Windows 7 64 位上安装 Visual Studio 2015 社区版 由于某种原因 安装程序显示 安装被阻止 并显示错误 此版本的 Visual Studio 需要一台装有较新版本 Windows 的计算机 为了完全安
  • 如何在递归调用函数时阻止 bash 创建子 shell

    这是一个计算阶乘的简单 shell 函数 bin bash function factorial if 1 lt 2 then echo 1 else echo 1 factorial 1 1 fi factorial 1 但我发现这个脚本
  • xamarin 形式的图像上方其他图像的一半

    我正在使用 xamarin 表单 我需要创建一个布局 其中两个对象的位置如下 一个 圆 的一半在另一个对象 正方形 之上 我已经搜索过了 看来我需要使用相对布局 我尝试将两个对象设置在同一网格 行和行 0 中 然后使用constraintX
  • 静态属性赋值后为空

    我有这个代码 static class Global public static readonly IChannelsData Channels new ChannelsData public static readonly IMessag
  • 在组合框中显示可见工作表

    您好 我有以下代码来在组合框中显示工作表 创建工作表后 工作表会自动添加到列表中 我不希望隐藏的工作表在保管箱中可见 我怎么做 Option Explicit Private Sub ComboBox1 Change If ComboBox
  • Numpy uint8_t 数组到 vtkImageData

    我正在尝试拍摄一个或三个通道的 2D 图像并使用 VTK 中显示它们vtkImageActor 据我了解 要显示的当前帧可以通过调用来更新SetImageData on vtkImageActor并提供一个实例vtkImageData 我已
  • 检查字符串是否是有效的 AD 组

    使用以下代码 我可以轻松查看提供的用户是否存在于提供的组中 public static bool IsInGroup string user string group using var identity new WindowsIdenti
  • 哪个是更智能的 git 协议,ssh 或 git(通过 ssh)或 https 协议?

    哪个高效 SSH 或 Git 文件压缩 我对 Git 的理解是 git 协议很智能 因为通信两端都有一个协议代理来压缩文件传输 从而通过有效地使用网络带宽来实现更快的克隆 From 我发现了以下说法 For secure authentic