- 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 - 守护进程
- Git - GitWeb
- Git - GitLab
- Git - 第三方托管选项
- 分布式 Git
- Git - 分布式工作流程
- Git - 为项目贡献代码
- Git - 维持项目
- 自定义 Git
- Git - 配置
- Git - 钩子
- Git - 属性
- Git - Init
- Git - Commit
Git - Git 协议
Git 包含 Git 协议,这是一种专门的网络协议,它作为在端口 9418 上运行的守护进程来服务 Git 仓库。
虽然它没有加密或身份验证,但它的功能类似于 SSH。
主要特性
Git 协议的一些主要特性包括:
1. 专为 Git 打造 - 它针对 Git 仓库进行了优化,用于传输 Git 对象和仓库数据。它比 SSH、HTTP 等其他协议更高效。
2. 无身份验证 - 与其他协议不同,Git 协议默认情况下不需要身份验证。这允许您从远程仓库克隆和获取数据。但是,如果没有适当的访问权限,您无法将数据推送到远程仓库。
3. 效率 - 由于此协议专门用于 Git 仓库,因此在从大型仓库获取和克隆数据时,它更快更高效。
4. 使用专用端口 - 此协议运行在专用端口9418 上。通过绕过 HTTP/SSH 的开销来提高速度,但会被防火墙阻止。
为了能够使用此协议提供服务,仓库中需要存在一个git-daemon-export-ok文件。
安全性很简单:要么每个人都可以克隆仓库,要么不行。
通过此协议推送更新的情况很少见,因为它不提供身份验证。
由于缺乏身份验证,任何有权访问仓库 URL 的人都可能被允许进行未经授权的更改。
工作原理?
以下是 Git 协议工作原理的步骤:
克隆或获取仓库 - 通过 Git 协议(通过 git:// URL)连接到 Git 服务器后,服务器会发送引用列表(分支、标签等),客户端请求它需要的特定数据(对象)。
推送更改 - Git 协议本身不支持经过身份验证的推送操作,因此通常不用于推送更改。为此,通常使用 SSH 或 HTTPS。
如果您想使用 Git 协议克隆仓库,请运行以下命令:
git clone git://github.com/username/repository.git
优点
Git 协议有很多优点:
更快 - Git 协议通常是 Git 仓库最快的网络传输协议。
使其非常适合处理繁重的流量负载或服务大型项目,尤其适用于需要快速访问的开放项目。
轻量级 - 它像 SSH 一样高效地传输数据,但没有身份验证和加密的开销。
因此可以提高性能并减少服务器的计算负载,尤其对于只读任务(如克隆仓库)而言。
广泛支持 - Git 协议由于其轻量级且高效地处理数据,因此可以扩展以管理不需要用户身份验证即可进行读取访问的大型项目。
缺点
Git 协议有一些缺点:
安全性有限 - 因为它没有加密 (TLS),用户可能容易受到任意代码执行的攻击。
控制网络基础设施的攻击者可能会更改仓库的内容,这可能导致系统运行恶意程序。
无身份验证 - 由于没有内置身份验证,任何知道仓库 URL 的人都可以克隆它。
这对于开放项目是有益的,但它会使专有代码或敏感代码面临风险。
设置复杂 - Git 协议需要额外的设置过程,例如为 git 守护进程配置 xinetd 或 systemd,这对某些用户和环境来说可能很困难。
防火墙问题 - 由于 Git 协议运行在自定义端口 9418 上,因此它可能无法访问这些防火墙,这些防火墙通常出于安全原因而被禁止。
Git 协议是一种高效且专用的 Git 数据传输协议,但由于缺乏身份验证和加密,它主要用于只读任务和其他公共场景。在需要高安全性和加密的写访问权限的情况下,SSH 和 HTTP 是更可取的协议。