- Git 入门
- Git - 首页
- Git - 版本控制
- Git - 基本概念
- Git - 命令行
- Git - 安装
- Git - 首次设置
- Git - 基本命令
- Git - 获取帮助
- Git - 工具
- Git - 速查表
- Git - 术语
- Git 分支
- Git - 简述分支
- Git - 创建新分支
- Git - 切换分支
- Git - 分支和合并
- Git - 合并冲突
- Git - 管理分支
- Git - 分支工作流程
- Git - 远程分支
- Git - 追踪分支
- Git - 变基
- Git - 变基 vs. 合并
- Git - 合并提交
- Git 操作
- Git - 克隆操作
- Git - 标签操作
- Git - 别名操作
- Git - 提交操作
- Git - 暂存操作
- Git - 移动操作
- Git - 重命名操作
- Git - 推送操作
- Git - 拉取操作
- Git - Fork 操作
- Git - Patch 操作
- Git - Diff 操作
- Git - 状态操作
- Git - 日志操作
- Git - HEAD 操作
- Git - origin master
- Git 撤销
- Git - 撤销更改
- Git - Checkout
- Git - Revert
- Git - Reset
- Git - 恢复操作
- Git - Rm
- Git - Switch 操作
- Git - Cherry-pick
- Git - Amend
- Git 服务器端
- Git - 本地协议
- Git - 智能HTTP协议
- Git - 哑HTTP协议
- Git - SSH协议
- Git - Git协议
- Git - 在服务器上安装Git
- Git - 设置服务器
- Git - Daemon
- Git - GitWeb
- Git - GitLab
- Git - 第三方托管选项
- 分布式Git
- Git - 分布式工作流程
- Git - 为项目做贡献
- Git - 维持项目
Git - 哑HTTP协议
Git 哑HTTP 协议也称为 旧版HTTP协议。它是通过HTTP提供Git仓库的较旧且更简单的方法。
Git被视为文件的集合,这些文件以静态方式提供。
主要特性
1. 基于文件系统 - 在哑HTTP中,文件以静态方式提供。提交、blob、树等对象是通过一个接一个地从服务器下载来检索的。
2. 缺少Git特定逻辑 - 服务器上不需要任何Git特定服务或命令。任何可用的Web服务器,例如Apache,都可以将git目录作为一组文件提供。
3. 效率低下 - 由于服务器不需要任何Git特定命令,用户必须一次一个地执行克隆、拉取、获取等操作。这使得整个过程相当缓慢。
4. 缺少智能协商 - 会发生冗余和不必要的对象下载,因为哑HTTP不会与客户端协商。
5. 只读 - 哑HTTP是只读的。它允许你克隆、拉取和获取仓库,但你不能向服务器推送任何内容。
在哑HTTP中,Web服务器直接将原始Git仓库作为文件提供。
为了设置哑HTTP,必须在HTTP文档根目录下安装一个裸Git仓库,并且必须设置一个post-update钩子来处理仓库更新。
启用后,任何有权访问托管它的Web服务器的用户都可以使用哑HTTP克隆仓库。
虽然它缺乏智能HTTP的复杂功能,但哑HTTP使通过HTTP进行的Git操作更简单、更易于访问。
工作原理?
克隆或获取仓库时,会发出一系列HTTP请求。
来自.git/objects/目录的单个对象。
来自.git/refs的引用信息。
来自.git/objects/pack的Pack文件。
由于哑HTTP中的每个对象都被视为并下载为单独的HTTP请求,因此整体性能较慢。
要通过HTTP启用对我们的Git仓库的读取访问,请按照以下步骤操作
cd /var/www/htdocs/ git clone --bare /path/to/git_project gitproject.git cd gitproject.git mv hooks/post-update.sample hooks/post-update chmod a+x hooks/post-update
Git的默认post-update钩子运行git update-server-info以保持HTTP获取和克隆正常工作。
当更改被推送到仓库时,包括通过SSH,此钩子会自动触发。
推送仓库后,其他用户可以通过运行类似git clone http://example.com/path/to/repo.git的命令来克隆它。
通过检索仓库的完整副本,此命令确保所有相关元数据都是最新的,并且可以通过HTTP访问。