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功能,包括身份验证和推送功能。

广告