- Git 入门
- Git - 首页
- Git - 版本控制
- Git - 基本概念
- Git - 命令行
- Git - 安装
- Git - 首次设置
- Git - 基本命令
- Git - 获取帮助
- Git - 工具
- Git - 速查表
- Git - 术语
- Git 分支
- Git - 简述分支
- Git - 创建新分支
- Git - 切换分支
- Git - 分支和合并
- Git - 合并冲突
- Git - 管理分支
- Git - 分支工作流程
- Git - 远程分支
- Git - 跟踪分支
- Git - 变基
- Git - 变基与合并
- Git - 合并提交
- Git 操作
- Git - 克隆操作
- Git - 打标签操作
- Git - 别名操作
- Git - 提交操作
- Git - 暂存操作
- Git - 移动操作
- Git - 重命名操作
- Git - 推送操作
- Git - 拉取操作
- Git - Fork 操作
- Git - 修补操作
- Git - 差异操作
- Git - 状态操作
- Git - 日志操作
- Git - HEAD 操作
- Git - origin master
- Git 撤销
- Git - 撤销更改
- Git - Checkout
- Git - 恢复
- Git - 重置
- Git - 恢复操作
- Git - Rm
- Git - 切换操作
- Git - Cherry-pick
- Git - 修正
- Git 在服务器上
- Git - 本地协议
- Git - 智能HTTP协议
- Git - 哑HTTP协议
- Git - SSH协议
- Git - Git协议
- Git - 在服务器上获取Git
- Git - 设置服务器
- Git - 守护进程
- Git - GitWeb
- Git - GitLab
- Git - 第三方托管选项
- 分布式Git
- Git - 分布式工作流程
- Git - 为项目做贡献
- Git - 维护项目
Git - 智能HTTP
Git **智能HTTP** 协议是通过HTTP提供Git存储库更新且更高级的方法。它也被称为**现代HTTP协议**。
Git 1.6.6 引入了一个更智能的协议,允许Git协商类似SSH的数据交换。
较新的协议,称为智能HTTP,由于其智能的通信技术和友好的结构而广受欢迎。
另一方面,之前的技术,称为哑HTTP,采用了不太先进的通信和数据传输方法。
关键特性
智能HTTP使用标准的HTTPS端口,功能类似于SSH或Git协议。
它兼容多种HTTP身份验证协议,包括用户名/密码身份验证。
1. **Git感知服务器** - 服务器理解各种特定于Git的服务和命令,例如**git-upload-pack**和**git-receive-pack**。
2. **智能协商** - 服务器和客户端之间进行协商。它避免了冗余数据的传输,使其比哑HTTP协议更高效。
3. **减少HTTP请求** - 由于没有传输冗余数据,因此减少了HTTP请求的数量。多个对象被合并到压缩的packfiles中,从而提高了性能。
4. **高效克隆** - 智能HTTP减少了克隆存储库时发送的对象数量,并使用特定于Git的优化来加快整个过程。
5. **身份验证** - 通过HTTPS使用密码、令牌或基于OAuth的机制通常可以进行身份验证的访问。智能HTTP支持匿名访问和身份验证访问。
6. **支持推送** - 与哑HTTP不同,智能HTTP允许您将更改推送到远程存储库。从而使其在读写操作方面都完全发挥作用。
这增加了那些可能难以设置SSH密钥的用户的便利性。
智能HTTP使用HTTPS进一步确保了网络上的安全数据传输。
智能HTTP将安全推送与身份验证和加密(如SSH)以及匿名服务(**git://**协议)的功能结合在一起。
它通过允许使用单个URL来推送和检索存储库内容来消除对不同URL的需求。
为了确保安全的交互,服务器可能会在推送到经过身份验证的存储库时要求用户名和密码。
由于GitHub等平台有效地使用了智能HTTP,因此可以查看、克隆和推送存储库,使用相同的URL(**https://github.com/user/repo**),具体取决于用户的权限。
这种统一的方法改进了访问控制措施并简化了存储库管理。
它是如何工作的?
服务器上使用两个主要的Git命令
**git-upload-pack** - 通过将必要对象发送到客户端来使用**git fetch**和**git pull**等操作。
**git-receive-pack** - 通过接收客户端发送的必要对象并更新存储库来使用**git push**等操作。
优点
智能HTTP协议具有以下优点
智能HTTP协议通过仅在需要时请求身份验证并仅使用一个URL执行所有操作,从而简化了访问。
与SSH密钥管理相比,用户可以使用其用户名和密码进行身份验证,这使得使用起来更容易,尤其对于不太有经验的用户或不习惯使用SSH的系统。
与SSH类似,智能HTTP提供快速有效的性能。
为了进一步提高安全性,存储库可以选择通过HTTPS以只读模式托管,从而确保加密的内容传输。
为了进一步保护通信,可以要求客户端使用特定签名的SSL证书。
公司防火墙通常允许广泛支持的协议(如HTTP和HTTPS),从而在受限网络中更容易访问。
缺点
以下是使用智能HTTP进行Git存储库的一些缺点
在某些服务器上,配置通过HTTPS的Git可能比配置SSH更复杂,这增加了与初始配置相关的开销。
尽管存在这种复杂性,但在交付Git信息方面,智能HTTP相较于其他协议提供了显著的优势。
管理用于HTTP身份验证推送的凭据可能比管理SSH密钥更困难。
像Windows的Credential Manager和macOS的Keychain这样的程序通过安全地存储密码来简化凭据管理。
Git文档的凭据存储部分包含安全HTTP密码缓存的设置说明。
**智能HTTP协议**是通过HTTP/HTTPS与远程存储库交互的首选现代方法,它提供了效率、性能和完整的Git功能,包括身份验证和推送功能。