以下软件将被安装
Git
Gitosis
user1可以对于test仓库有读写权限,user2对于test仓库只有可读权限。

1. 增加yum repository

在CentOS中,在不增加repository情況下是找不到Git的套件的,所以需要增加一個repository。

rpm -Uvh http://yum.beta.gist.com/gist/centos/5/RPM/epel-release-5-3.noarch.rpm

2. 安裝Git, git-web以及gitosis

yum -y install git gitweb gitosis

3. 配置Git账号

useradd git # 使用"git"作為管理Git的用戶
passwd git # 更改"git"密码

4. 配置Gitosis

su - git # 使用"git"操作
cd ~
# Gitosis需要设置name和email才能进行commit动作
git config --global user.name "用戶显示的名称"
git config --global user.email "用戶邮件地址"
ssh-keygen -t rsa # "git"用户作为Git服务器的管员,#用它來生成public key

5. 初始化Gitosis

su – git
gitosis-init < ~/.ssh/id_rsa.pub

#Gitosis管理一个特殊的 Git 仓库。你只需要在这个特殊仓库内做好相应的设定,然后推送到服务器上,Gitosis 就会随之改变运行策略. #这样该公钥的拥有者就能修改用于配置 Gitosis 的那个特殊 Git 仓库了。接下来,需要手工对该仓库中的 post-update 脚本加上可执行权限:

 chmod 755 /home/git/repositories/gitosis-admin.git/hooks/post-update 

6. 配置git服务选项,取出”gitosis-admin” repository

su - git
cd ~ 
git clone git@SERVER:/gitosis-admin.git # 取出儲存權限的repository 
#修改gitosis.conf配置文件 
su - git 
cd ~ 
vi ./gitosis-admin/gitosis.conf 
[gitosis] loglevel=DEBUG #增加这一句将开启debug模式显示更多的信息 
# 增加 
[group rw] 
writable = test 
members = user1 
[group rd] 
readonly = test 
members = user2 
# 格式 
[group 群组名称] 
writable = 项目名称 
members = 用戶 (用空白分开不同的用户) 
#将配置文件推到服务器上 
cd gitosis-admin 
git add . 
git commit -am "config1" 
git push origin master # 如果SSH port不是22 -> git push ssh://git@SERVER:SSH_PORT/gitosis-admin.git master

7. 建立第一个版本的”test” project

su - git
cd ~/repositories
mkdir test.git
chmod 750 test.git
cd test.git
git init --bare # 建立一個空的repository

在client上新建user1 user2用户

useradd user1
passwd user1
useradd user2
passwd user2

先测试是否可以clone

su – user1
cd ~
git clone git@192.168.1.245:repositories/test.git #!注意地址我这245是服务器的地址

提示将一个空仓库拉下来了

cd test/
echo "A" &gt;hello
git add .
git commit -am “162:user1:1” # 要先设定user.email和user.name,
git push origin master #推到服务器的版本库里

接着用git2测试落下test看有无user1添加的hello文件

su – user2
cd ~
git clone git@192.168.1.245:repositories/test.git

ls显示已经有hello文件了

8配置用户权限
建立user1,user2的公钥和密匙(默认是2048位的)
su – user1
ssh-keygen -t rsa
su – user2
ssh-keygen -t rsa

将user1和user2的公钥复制到git配置文件夹的keydir中
su – git #在服务器上操作
cd ~/gitosis-admin

vim keydir/ser1.pub
vim keydir/user2.pub #将公匙复制进去
git add keydir/user*
git commit -am “config3″
git push origin master

注意:将密匙加入后user1 和user2clone地址变化了,我也不知道为什么

su – user1;cd ~
git clone git@192.168.1.245:test.git
有写入权限
su – user2;cd ~
git clone git@192.168.1.245:test.git
只有读取权限无写权限

8. 通过私钥登陆(附)/strong>

1.安装Git Bash、TortoiseGit
2.运行Git Bash,输入ssh-keygen -t rsa -C “test@test.com”以后的验证码什么的留空就好
3.此后会在用户.ssh下生产id_rsa 和id_rsa.pub两个文件,为了方便可以改名test@test test@test.pub
4.进入TortoiseGit/bin运行puttygen,选择Conversions-Import Key,导入test@test文件,并保存private key命名为test_putty.ppk
5.把test@test.pub上次到git服务器/home/git/gitosis-admin/keydir,commit
6.clone时候选择test_putty.ppk

9. 通过gitblit管理(附)/strong>
参考http://gitblit.com/
gitblit还是一个很不错的git管理工具,用起来很方便,有点github的感觉,推荐使用