目前我们用的版本管理服务大多数从 svn
转移到了 git
。说到 git
程序猿就不得不提 github
了(不知道自行Google)。今天我们就搭建一个和 github
一样的 git
服务器。
服务器:Centos
Git版本: git version 1.7.1
gitServer: Gitosis
在安装 git
服务器之前安装一些必要的服务
openssh
服务器
sudo yum install openssh-server openssh-client -y
git
服务器 gitosis
sudo yum install git-core -y cd /tmp git clone https://github.com/res0nat0r/gitosis.git
安装 gitosis
需要 python
的 python-setuptools
工具
sudo yum install python-setuptools -y
:beer:OK,可以安装 git
服务器了
cd gitosis sudo python setup.py install
出现下面的信息表示安装成功了
Using /usr/lib/python2.6/site-packages Finished processing dependencies for gitosis==0.2
:beers:所有的服务都安装好了,我们接下来就开始配置 git
服务器了
通过 gitosis
配置 git
服务器
创建 git
用户,设置密码,切换到 git
用户
sudo useradd -m -s /bin/bash -d /home/git git sudo passwd git su - git
上传管理git者的主机公钥用于建立连接git服务器[非服务器主机操作]
ssh-keygen -t rsa # 一路回车就OK了
显示下面的信息就OK了 ![](http://7xrxhd.com1.z0.glb.clouddn.com/gits01.jpg) 这时会生成 `id_rsa`和`id_rsa.pub` 两个文件,我们需要把 `id_rsa.pub`上传到`git`服务器上面
#通过scp上传 scp id_rsa.pub git@192.168.199.132:/home/git
:beer:这样管理git者这边暂且OK了。
配置 git
服务器 gitosis
切换`git`用户,通过管理者主机的公钥初始化`gitosis`, 设置权限
[git@localhost ~]$ gitosis-init < /home/git/id_rsa.pub Initialized empty Git repository in /home/git/repositories/gitosis- admin.git/ Reinitialized existing Git repository in /home/git/repositories/gitosis- admin.git/ [git@localhost ~]$ sudo chmod 755 /home/git/repositories/gitosis-admin.git/ hooks/post-update
:beer:初始化好了`gitosis`
管理者主机clone gitosis-admin
git clone ssh://git@192.168.199.132:22/gitosis-admin.git cd gitosis-admin ls gitosis.conf keydir
`gitosis.conf`: git服务器配置文件 `keydir`: 存放客户端公钥 配置`gitosis.conf`文件
[gitosis] [group gitosis-admin] #组名称 members = songlijun@songlijundeMBP.lan #组成员 writable = gitosis-admin #项目名称 [group git-test] members = songlijun@songlijundeMBP.lan writable = git-test
这里添加了`git-test`项目组,上传到个git服务器
songlijundeMBP:gitosis-admin songlijun$ git add . songlijundeMBP:gitosis-admin songlijun$ git commit -m 'update gitosis.conf' [master 9967e3e] update gitosis.conf 1 file changed, 4 insertions(+) songlijundeMBP:gitosis-admin songlijun$ git push
git服务器创建git-test.git仓库
[root@localhost repositories]# su git [git@localhost repositories]$ git init git-test.git --bare Initialized empty Git repository in /home/git/repositories/git-test.git/ [git@localhost repositories]$ ls gitosis-admin.git git-test.git
:beers:在`git`服务器创建好了`git-test`的仓库,这样客户端即可以`clone`了,进行管理了。
客户端clone git-test项目
songlijundeMBP:gitTest songlijun$ git clone ssh://git@192.168.199.132:22/ git-test.git Cloning into 'git-test'... warning: You appear to have cloned an empty repository. Checking connectivity... done. songlijundeMBP:gitTest songlijun$ ls git-test gitosis-admin
:beer:接下来就可以进行代码管理了。