Git Server搭建

                       

本文原文出处: http://blog.csdn.net/bluishglc/article/details/49310125 严禁任何形式的转载,否则将委托CSDN官方维护权益!


1 参考

所有相关细节均可以从该文档出获取:

http://git.oschina.net/progit/4-%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%8A%E7%9A%84-Git.html#

2 安装

Git并不存在Server端和Clint端之分,在Git Server上安装的也还是Git。最简单的安装方式是直接用系统提供的包管理工具。例如CentOS/RHEL,可以使用:

yum install git
  
  
  • 1

3 协议

Git支持四种主要的协议来传输数据:本地传输,SSH 协议,Git 协议和 HTTP 协议, 我们来简单快速地过一下这四种协议。

3.1 FILE 本地协议

对于本地协议来讲几乎只有一种可能的应用场景:即团队使用的是共享的文件系统(例如 NFS),团队中的每一个成员都能向访问本地文件系统一样访问它。

3.2 SSH 协议

SSH是Git最常用传输协议,这是应为SSH本身已经非常成熟且通用的访问协议了,Git基于SSH是非常聪明的选择。另外SSH是四种协议中唯一一个同时支持读写操作的网络协议

一个典型的SSH协议的repo是这样的:

git clone user@gitserver:/path/to/my-project.git
  
  
  • 1

3.3 GIT 协议

Git 协议是现存最快的传输协议。如果你在提供一个有很大访问量的公共项目,或者一个不需要对读操作进行授权的庞大项目,架设一个 Git 守护进程来供应仓库是个不错的选择。它使用与 SSH 协议相同的数据传输机制,但省去了加密和授权的开销。

3.4 HTTP/S 协议

HTTP 协议的好处是易于架设。几条必要的命令就可以让全世界读取到仓库的内容。

简单总结一下: 如果是公司的项目,SSH可能是你们团队唯一需要使用的协议。如果是开源项目或者是允许对项目进行匿名只读访问,那么除了SSH 协议之外,还需要支持Git或Http/s协议以便他人访问读取。

4 配置

实际上Git并无特别的配置,只是如果我们使用SSH协议进行数据传输的话我们需要创建专职的登陆账号和登入密钥,因此所谓的“配置”其实是SSH相关的配置。

4.1 GIT(SSH) SERVER端配置

创建Git用户和用户组

groupadd gituseradd -g git -d /var/git git
  
  
  • 1
  • 2

命令本省非常简单, 这里要解释的是为什么我们要创建这个git用户,这个用户不是为了运行Git而创建的专职用户,而仅仅是为了SSH访问而创建的。正如我们在前面“SSH协议”一节中提到的地址格式:

git clone user@gitserver:/path/to/my-project.git
  
  
  • 1

这里的“user@gitserver”实质上就是SSH在登入时提供的用户和远程主机的命令行格式,所以说,既然我们需要使用SSH的方式登入并进行数据读写,总归是要有一个登入账户吧?OK,那就创建一个叫git专用账户来专门支持git的数据传输吧。

另外,我们把git用户的home目录设定为了/var/git, 用以区别一般的登入账户。而这个/var/git下,是放置所有repository的理想位置。

4.2 GIT(SSH) CLIENT端配置

同样的,并没有什么真正的git client端配置,还是SSH登陆的问题,无非就是为本地用后创建SSH密钥对,并把公钥拷贝到Server端git用户的~/.ssh/authorized_keys中,简单讲就是:只要本地能通过密钥登入git@gitserver就算是完成了客户端的配置。

关于配置SSH密钥登入,本文不再赘述。只是结合这里的场景重复一个角色:客户端要访问Git Server则应由客户端生成密钥,私钥客户端保存,公钥拷贝至Git Server的Git用户的authorized_keys文件中。

5 操作

配置完成之后,我们就可以在Server端创建(初始化)Repository了。假定的我们要创建的项目就叫“project”,我们在应该在Server端执行如下命令:

$ cd /var/git$ mkdir project.git$ cd project.git$ git --bare init
  
  
  • 1
  • 2
  • 3
  • 4

参数–bare指明创建的是一个不包含工作目录的“裸”仓库。

接下来,某个客户端就可以把这个repo加为远程仓库,再推送一个分支,从而把第一个版本的项目文件上传到仓库里了。命令如下:

$ cd myproject$ git init$ git add .$ git commit -m 'initial commit'$ git remote add origin git@gitserver:/var/git/project.git$ git push origin master
  
  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

一但有文件push到远程仓库,其他的客户端就可以clone了:

$ git clone git@gitserver:/var/git/project.git
  
  
  • 1
           

再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值