Git 可以使用四种主要的协议来传输数据
1. 本地传输:
远程仓库在该协议中就是硬盘上的另一个目录
2. SSH 协议
SSH 也是唯一一个同时便于读和写操作的网络协议。另外两个网络协议 (HTTP 和 Git)通常都是只读的,所以虽然二者对大多数人都可用,但执行写操作时还是需要 SSH。SSH 同 时也是一个验证授权的网络协议;而因为其普遍性,通常也很容易架设和使用
通过 SSH 进行访问是安全的——所有数据传输都是加密和授权的。最后, 类似 Git 和 本地协议,SSH 很高效,会在传输之前尽可能的压缩数据。
3. Git 协议
这是一个包含在 Git 软件包中的特殊守护进程; 它会监听一个提供类似于 SSH 服务 的特定端口(9418),而无需任何授权。用 Git 协议运营仓库,你需要创建 git-export-daemon-ok 文件——它 是协议进程提供仓库服务的必要条件——但除此之外该服务没有什么安全措施
Git 协议是现存最快的传输协议
Git 协议消极的一面是缺少授权机制。用 Git 协议作为访问项目的唯一方法通常是不可取的
4. HTTP/S 协议
HTTP 或 HTTPS 协议的优美之处在于架设的简便性。基本上, 只需要把 Git 的纯仓 库文件放在 HTTP 的文件根目录下,配置一个特定的 post-update 挂钩(hook),就搞定了
在服务器部署 Git
开始架设 Git 服务器的时候,需要把一个现存的仓库导出为新的纯仓库——不包含当前工作目录的仓库。 方法非常直截了当。 把一个仓库克隆为纯仓库,可以使用 clone 命令的 --bare 选项。纯仓库的目录名以.git 结尾
git clone --bare my_project my_project.git
将纯目录转移到服务器 (假设一个域名为 git.example.com的服务器已经架设好,并可以通过 SSH 访问,而你想把所有的 Git 仓库储存在 /opt/git 目录下)
scp -r my_project.git user@git.example.com:/opt/git
生成 SSH 公钥
SSH 公钥默认储存 在账户的 ~/.ssh 目录
首先查看是否存在公钥( cd ~/.ssh ls) ,关键是看有没有用 文件名 和 文件名.pub 来命名的一对文件,这个 文件名 通常是 id_dsa 或者 id_rsa.pub 文件是公钥,另一个文件是密钥
网友评论