文章目录
- 概述
- 一、协议
- 1.1 本地协议
- 1.2 HTTP协议
- 1.3 SSH协议
- 1.4 Git协议
- 二、在服务器上搭建 Git
四智武童
一月一,捡花衣。二月二,练大字。三月三,穿新衣。四月四,去考试。考一个状元郎,坐著马车平天下。
概述
Git访问离不开服务器,一般在服务器中架设Git服务器,然后其他用户同时访问这个服务器,在这个服务器中的公共仓库中进行推送和拉取资料。
远程仓库通常只是一个裸仓库(bare repository),只是作为合作媒介,不需要从磁盘检查快照,存放的只有git的资料,包含的只有工程目录内的.git子目录中的内容,没有其他资料文件内容。
一、协议
Git支持四种不同的传输协议:本地协议(Local),HTTP 协议,SSH(Secure Shell)协议及 Git 协议
1.1 本地协议
本地协议(Local protocol)是最基本的协议。
远程仓库就是同一台机器上的另一个目录。同时不同成员访问同一个共享的文件系统。
git clone /srv/git/project.git # 直接访问
git clone file:///srv/git/project.git # 通过file协议访问,会降低效率
优点:
- 简单,可以使用本地的文件权限和网络访问权限进行管理
- 快速简单
缺点:
- 文件系统比较难配置;
- 要通过网络访问,需要挂载一个远程硬盘,比较慢,也不太安全;
- 容易因为磁盘或者电脑故障导致仓库损坏。
1.2 HTTP协议
Git 通过 HTTP 通信有两种模式(哑(Dumb) HTTP 协议、智能 HTTP 协议)。
git clone https://example.com/gitproject.git
优点:
不同的访问方式只需要一个 URL 以及服务器只在需要授权时提示输入授权信息,这两个简便性让终端用户使用 Git 变得非常简单。
与 SSH 协议类似,HTTP 协议也非常快和高效。
HTTPS 协议被广泛使用,一般的企业防火墙都会允许这些端口的数据通过。
缺点:
在一些服务器上,架设 HTTPS 协议的服务端会比 SSH 协议的棘手一些。 除了这一点,用其他协议提供 Git 服务与智能 HTTP 协议相比就几乎没有优势了。
1.3 SSH协议
git clone ssh://[user@]server/project.git
git clone [user@]server:project.git
优势:
SSH 架设相对简单 —— SSH 守护进程很常见,多数管理员都有使用经验,并且多数操作系统都包含了它及相关的管理工具;
通过 SSH 访问是安全的 —— 所有传输数据都要经过授权和加密;
与 HTTPS 协议、Git 协议及本地协议一样,SSH 协议很高效,在传输前也会尽量压缩数据;
缺点:
SSH 协议的缺点在于它不支持匿名访问 Git 仓库;
如果你使用 SSH,那么即便只是读取数据,使用者也 必须 通过 SSH 访问你的主机, 这使得 SSH 协议不利于开源的项目,毕竟人们可能只想把你的仓库克隆下来查看;
1.4 Git协议
Git 里的一个特殊的守护进程;它监听在一个特定的端口(9418),类似于 SSH 服务,但是访问无需任何授权。
要让版本库支持 Git 协议,需要先创建一个 git-daemon-export-ok 文件 —— 它是 Git 协议守护进程为这个版本库提供服务的必要条件 —— 但是除此之外没有任何安全措施。 要么谁都可以克隆这个版本库,要么谁也不能。 这意味着,通常不能通过 Git 协议推送。
优点:
Git 协议是 Git 使用的网络传输协议里最快的。
缺点:
Git 协议缺点是缺乏授权机制。 把 Git 协议作为访问项目版本库的唯一手段是不可取的。
二、在服务器上搭建 Git
Git服务器搭建参考如下链接:
Ubuntu Server搭建Git服务器
Linux学习笔记-Ubuntu系统下配置用户ssh只能访问git仓库
华为云云耀云服务器L实例评测|从零搭建Git服务器并配置ssh免密访问
Git for windows软件下载路径为:Git for windows
Windows版本下载路径:Download for Windows
Linux版本安装参考官网说明:Download for Linux and Unix