1.编译安装git
1 |
$ wget http: //kernel.org/pub/software/scm/git/git-1.7.3.tar.gz #目前最新版本 |
2 |
$ tar -xzvf git-1.7.3,tar.gz #解压出来 |
3 |
$ cd git-1.7.3 #进入目录 |
4 |
$ yum install -y gettext-devel expat-devel curl-devel zlib-devel openssl-devel #-y是默认自动安装,安装编译时用到的东东 |
5 |
$ ./configure --with-curl=/usr/local #git安装路径 |
6 |
$ make && make install #最小化安装的CentOS是没有make的,可以 yum install make 进行安装 |
7 |
$ git --version #查看版本号,确实git是否安装成功 |
2.安装gitosis
1 |
$ yum install python python-setuptools |
2 |
$ git clone git: //eagain.net/gitosis.git |
3 |
$ cd gitosis |
4 |
$ python setup.py install |
3.在开发机器上生成公共密钥(用来初始化gitosis)
1 |
$ ssh-keygen -t rsa #不需要密码,一路回车就行(在本地操作) |
2 |
$ scp ~/.ssh/id_rsa.pub root@xxx:/tmp/ # 上传你的ssh public key到服务器 |
4.初始化gitosis
1 |
$ adduser git # 新增一个git用户 |
2 |
$ su - git # 切换倒git用户下 |
3 |
$ gitosis-init < /tmp/id_rsa.pub # id_rsa.pub是刚刚传过来的 |
4 |
$ rm /tmp/id_rsa.pub # id_rsa.pub已经无用,可删除. |
5.获取并配置gitosis-admin
01 |
$ git clone git@xxx: /home/git/repositories/gitosis-admin.git # 在本地执行,获取gitosis管理项目 |
02 |
$ vi gitosis-admin/gitosis.conf # 编辑gitosis-admin配置文件 |
03 |
# 在gitosis.conf底部增加 |
04 |
[group 组名] |
05 |
writable = 项目名 |
06 |
members = 用户 # 这里的用户名字 要和 keydir下的文件名字相一致 |
07 |
# VI下按ZZ(大写)两次会执行自动保存并退出,完成后执行 |
08 |
$ git commit -a -m “xxx xx” # 要记住的是,每次添加新文件必须执行git add .,或者git add filename,如果没有新加文件,只是修改的话就可以执行此句。 |
09 |
# 修改了文件以后一定要PUSH到服务器,否则不会生效。 |
10 |
$ git push |
新建项目
到此步就算完成gitosis的初始化了。接下来的是新建一个新项目到服务器的操作,如第5步中配置gitosis.conf文件添加的是
01 |
[group project1] # 组名称 |
02 |
writable = project1 # 项目名称 |
03 |
members = xxx # 用户名xxx为[group gitosis-admin]中的members一样 |
04 |
# 记得执行 |
05 |
$ git commit -a -m “添加新项目project1,新项目的目录是project1,该项目的成员是xxx“ # “”里的内容自定 |
06 |
$ git push |
07 |
# 进入到项目目录 |
08 |
$ cd /home/用户/project1 # project1要与gitosis.conf文件配置一致 |
09 |
$ git init |
10 |
$ git add . # 新增文件 留意后面有一个点 |
11 |
$ git commit -a -m “初始化项目project1″ |
12 |
# 然后就到把这个项目放到服务器上去 |
13 |
$ git remote add origin git@xxx:project1.git # xxx为服务器地址 |
14 |
$ git push origin master |
15 |
# 也可以把上面的两步合成一步 |
16 |
$ git push git@xxx:project1.git master |