Git 通信协议概述
Git 支持多种协议与远程仓库通信,包括HTTP/HTTPS、SSH 和 Git 协议。每种协议有各自的优缺点,适用于不同场景。
HTTP/HTTPS 协议
HTTP/HTTPS 协议通过标准 Web 端口通信,适合需要穿透防火墙或通过 CDN 加速的场景。优点是配置简单,易于穿透防火墙;缺点是性能较差,认证过程可能复杂。
git clone https://github.com/user/repo.git
git remote add https https://github.com/user/repo.git
启用智能 HTTP(Smart HTTP)时,Git 会像 SSH 一样高效。现代 Git 服务(如 GitHub、GitLab)默认支持智能 HTTP。
SSH 协议
SSH 协议通过加密通道通信,适合需要高安全性的场景。优点是安全性高,支持公钥认证;缺点是需要配置 SSH 密钥,可能受防火墙限制。
git clone git@github.com:user/repo.git
git remote add ssh git@github.com:user/repo.git
SSH 协议需要预先配置公钥到远程仓库。生成 SSH 密钥的命令:
ssh-keygen -t ed25519 -C "your_email@example.com"
Git 协议
Git 协议使用 9418 端口,是一种只读协议,适合开源项目分发。优点是性能高;缺点是缺乏加密和认证,通常需要配合其他协议使用。
git clone git://github.com/user/repo.git
协议选择建议
- 团队协作:优先选择 SSH 或 HTTPS,兼顾安全性与易用性。
- 开源分发:可搭配 Git 协议(只读)和 HTTPS(提交)。
协议切换方法
通过修改远程仓库 URL 可切换协议:
git remote set-url origin git@github.com:user/repo.git # 切换为 SSH
git remote set-url origin https://github.com/user/repo.git # 切换为 HTTPS
使用 git remote -v 可查看当前协议配置。
常见问题排查
- 权限拒绝:检查 SSH 公钥是否配置,或 HTTPS 密码是否正确。
- 连接超时:确认防火墙是否放行对应端口(SSH:22, HTTPS:443)。
- 协议不支持:某些托管服务可能禁用 Git 协议,建议查阅服务商文档。
409

被折叠的 条评论
为什么被折叠?



