Zhonghui

每个不曾起舞的日子,都是对生命的辜负

User Tools

Site Tools


软件:git:git的通信协议

Git的通信协议


Git 并不是一种协议,而是一种分布式版本控制系统。Git 在进行代码仓库的远程操作时(比如 git push、git pull),会通过某些网络协议来和远程仓库通信。Git 支持以下几种常见协议:

  1. HTTP/HTTPS 协议(例如 https://github.com/…)
  2. SSH 协议(例如 git@github.com:…)
  3. Git 协议(例如 git://,这是一个比较简单、只读的协议)
  4. 本地协议(比如直接在本地路径上使用 file:// 或绝对路径)

Git smart HTTP

如果 Apache 2 是一个“普通的静态 Web 服务器”,只把 Git 仓库的目录当成静态文件托管的话,直接 clone 是行不通的。git clone 并不是简单地下载一堆文件,而是通过 Git 协议(或者 HTTP(S) 的“智能协议”)和服务器交互,获取仓库的对象和 refs 信息。只有把 Apache 配置为支持 Git smart HTTP(也叫“智能 HTTP 协议”),或者单独跑一个 git-daemon/ssh 服务,Git 客户端才能正确和远程仓库通信。

什么是Git smart HTTP?(工作流程是?)

  1. git-http-backend 是 Git 自带的一个 CGI 程序
  2. Apache 收到请求时,把 URL 转发给 git-http-backend 处理
  3. git-http-backend 根据 Git 协议处理 clone/push/pull
  4. 这样 Apache 充当了一个通用 web server,而真正的 Git 协议细节由 git-http-backend 搞定
  5. 这就是 Git smart HTTP 模式。

如何配置Git smart HTTP

TODO

/var/www/DokuWikiStick/dokuwiki/data/pages/软件/git/git的通信协议.txt · Last modified: 2025/07/01 09:28 by zhonghui