环境部署
操作系统: Centos6.5 x64
Git: git-2.0.0
Gitosis: Gitosis
Gitweb: git-2.0.0
OpenSSH Server: openssh-server-5.3p1
apache: httpd-2.4.4
python-setuptools: python-setuptools-0.6.10-3
服务端:Git server(centos6.5 x64): node1.example.com
192.168.1.2
客户端:Git client(centos6.5 x64): node2.example.com
192.168.1.3
原理:
先搭建git服务器---再搭建Gitosis----再新建项目
root用户运行
#yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-devel gcc gcc-c++
curl zlib-devel perl cpio expat-devel gettext-devel perl-ExtUtils-MakeMaker perl-CPAN tk
#wget https://www.kernel.org/pub/software/scm/git/git-2.0.0.tar.gz
#tar zxvf git-2.0.0.tar.gz
#cd git-2.0.0
#make prefix=/usr/local all
#make prefix=/usr/local install
查看版本号:git --version
git version 2.0.0
如果编译报错不要慌,到我的博客去搜错误一定有解决办法。
$ yum install python python-setuptools $ git clone git://github.com/res0nat0r/gitosis.git $ cd gitosis $ python setup.py install
$ ssh-keygen -t rsa #不需要密码,一路回车就行(在本地操作) $ scp ~/.ssh/id_rsa.pub root@xxx:/tmp/ # 上传你的ssh public key到服务器
$ adduser git # 新增一个git用户(先添加用户组 groupadd git) $ su git # 切换倒git用户下 $ gitosis-init < /tmp/id_rsa.pub # id_rsa.pub是刚刚传过来的,注意放在/tmp目录主要是因为此目录权限所有人都有定权限的 $ rm /tmp/id_rsa.pub # id_rsa.pub已经无用,可删除.
$ git clone git@xxx:gitosis-admin.git # 切换到root用户并在本地执行,获取gitosis管理项目,将会产生一个gitosis-admin的目录,里面有配置文件gitosis.conf和一个 keydir 的目录,keydir目录主要存放git用户名
$ vi gitosis-admin/gitosis.conf # 编辑gitosis-admin配置文件
# 在gitosis.conf底部增加 [group 组名] writable = 项目名 members = 用户 # 这里的用户名字 要和 keydir下的文件名字相一致 # VI下按ZZ(大写)两次会执行自动保存并退出,完成后执行 $ cd gitosis-admin $ git add . $ git commit -a -m “xxx xx” # 要记住的是,如果每次添加新文件必须执行git add .,或者git add filename,如果没有新加文件,只是进行修改的话就可以执行此句。 # 修改了文件以后一定要PUSH到服务器,否则不会生效。 $ git push
[group project1] # 组名称 writable = project1 # 项目名称 members = xxx # 用户名xxx一定要与客户端使用的用户名完全一样,否则无权限操作
$ git commit -a -m “添加新项目project1,新项目的目录是project1,该项目的成员是xxx“ # “”里的内容自定
$ git push
$ mkdir /home/用户/project1 $ cd /home/用户/project1 $ git init $ git add . # 新增文件 留意后面有一个点 $ git commit -a -m “初始化项目project1″
$ git remote add origin git@xxx:project1.git # xxx为服务器地址
$ git push origin master
$ git push git@xxx:project1.git master
$ touch a.txt $ git add a.txt $ git commit -a -m 'add a.txt' $ git push
参考:
http://www.cnblogs.com/ahauzyy/archive/2013/04/08/3043384.html
http://blog.haohtml.com/archives/10093
http://blog.haohtml.com/archives/12658