搭建Git服务器

在远程仓库⼀一节中,我们讲了远程仓库实际上和本地仓库没啥不同,纯粹为了7x24⼩小时开

机并交换⼤大家的修改。

GitHub就是⼀一个免费托管开源代码的远程仓库。但是对于某些视源代码如⽣生命的商业公司

来说,既不想公开源代码,⼜又舍不得给GitHub交保护费,那就只能⾃自⼰己搭建⼀一台Git服务器

作为私有仓库使⽤用。

搭建Git服务器需要准备⼀一台运⾏行Linux的机器,强烈推荐⽤用Ubuntu或Debian,这样,通过

⼏几条简单的apt命令就可以完成安装。

假设你已经有sudo权限的⽤用户账号,下⾯面,正式开始安装。

第⼀一步,安装git:

$ sudo apt-get install git

第⼆二步,创建⼀一个git⽤用户,⽤用来运⾏行git服务:

$ sudo adduser git

第三步,创建证书登录:

收集所有需要登录的⽤用户的公钥,就是他们⾃自⼰己的id_rsa.pub⽂文件,把所有公钥导⼊入到/

home/git/.ssh/authorized_keys⽂文件⾥里,⼀一⾏行⼀一个。

第四步,初始化Git仓库:

先选定⼀一个⺫⽬目录作为Git仓库,假定是/srv/sample.git,在/srv⺫⽬目录下输⼊入命令:

$ sudo git init --bare sample.git

Git就会创建⼀一个裸仓库,裸仓库没有⼯工作区,因为服务器上的Git仓库纯粹是为了共享,所

以不让⽤用户直接登录到服务器上去改⼯工作区,并且服务器上的Git仓库通常都以.git结尾。然

后,把owner改为git:

$ sudo chown -R git:git sample.git

第五步,禁⽤用shell登录:

出于安全考虑,第⼆二步创建的git⽤用户不允许登录shell,这可以通过编辑/etc/passwd⽂文件

完成。找到类似下⾯面的⼀一⾏行:

git:x:1001:1001:,,,:/home/git:/bin/bash

改为:

git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell

这样,git⽤用户可以正常通过ssh使⽤用git,但⽆无法登录shell,因为我们为git⽤用户指定的git-

shell每次⼀一登录就⾃自动退出。

第六步,克隆远程仓库:

现在,可以通过 git clone 命令克隆远程仓库了,在各⾃自的电脑上运⾏行:

Git教程 By 廖雪峰

整理、排版:numbbbbb

$ git clone git@server :/srv/sample.git

Cloning into 'sample'...

warning: You appear to have cloned an empty repository.

剩下的推送就简单了。

管理公钥

如果团队很⼩小,把每个⼈人的公钥收集起来放到服务器的/home/git/.ssh/authorized_keys

⽂文件⾥里就是可⾏行的。如果团队有⼏几百号⼈人,就没法这么玩了,这时,可以⽤用Gitosis来管理公

钥。

这⾥里我们不介绍怎么玩Gitosis了,⼏几百号⼈人的团队基本都在500强了,相信找个⾼高⽔水平的

Linux管理员问题不⼤大。

管理权限

有很多不但视源代码如⽣生命,⽽而且视员⼯工为窃贼的公司,会在版本控制系统⾥里设置⼀一套完善

的权限控制,每个⼈人是否有读写权限会精确到每个分⽀支甚⾄至每个⺫⽬目 录下。因为Git是为Linux

源代码托管⽽而开发的,所以Git也继承了开源社区的精神,不⽀支持权限控制。不过,因为Git

⽀支持钩⼦子(hook),所以, 可以在服务器端编写⼀一系列脚本来控制提交等操作,达到权限

控制的⺫⽬目的。Gitolite就是这个⼯工具。

这⾥里我们也不介绍Gitolite了,不要把有限的⽣生命浪费到权限⽃斗争中。

⼩小结

搭建Git服务器⾮非常简单,通常10分钟即可完成;

要⽅方便管理公钥,⽤用Gitosis;

要像SVN那样变态地控制权限,⽤用Gitolite。


你可能感兴趣的:(搭建Git服务器)