(本文需要自己实践,由于时间关系,我仅仅是做了整理和快速的练习,至于笔记中的账号和ip域名都是我参考文章中的。如果读者有任何问题欢迎留言和发邮件到luoquantao@126.com)
硬件:云端阿里云服务器
软件:云端:gitosis + git + ssh
本地:cygwin 或者 gitbash
参考文章:http://www.open-open.com/lib/view/open1349849744275.html
http://bdxnote.blog.163.com/blog/static/844423520124137333373/
http://book.51cto.com/art/201107/278832.htm
http://blog.csdn.net/ice520301/article/details/6142503
http://blog.csdn.net/markddi/article/details/8289774
详细步骤如下:
1:创建git账号用于管理git服务器
useradd -s /bin/bash -d /home/git -G root -m -c "Manager for git server" -p git git
其中,-p:指定账户git的密码; -m:强制创建git账户的home目录; -d:指定git账号的home目录; -s:指定git账号的登录shell; -G:指定git账户所属的用户组; -c:指定git账号的描述;passwd git 设置git的密码:此处设置为git
如果在后面使用sudo的时候报错,需要修改/etc/sudoers文件
2: 升级系统
sudo apt-get update
sudo apt-get upgrade
3: 安装git相关的组件(包括git、openssh)
sudo apt-get install git-core openssh-server openssh-client
4:安装gitosis
4-1:初始化git服务器所管理的账户(提交代码时的账号)
git config --global user.name "zxk" git config --global user.email ""
4-2:安装python的setup tool,为安装gitosis做准备
sudo apt-get install python-setuptools
4-3:获取gitosis安装包
mkdir ~/.gitosis_setop cd ~/.gitosis_setop/ git clone git://eagain.net/gitosis.git 如果这个不行: Cloning into 'gitosis'... fatal: unable to connect to eagain.net: eagain.net[0: 208.78.102.120]: errno=Connection refused 则可从如下位置clone gitosis包: git clone
4-4:安装gitosis包
cd gitosis/ sudo python setup.py install 若报错,可通过如下命令解决: ez_setup.py
4-5:生成ssh公钥,并上传到git服务器上,或直接使用git账户在git服务器上生成,现在采用git账户直接在git服务器上生成。
ssh-keygen -t rsa
4-6:初始化gitosis
sudo -H -u git gitosis-init < ~/.ssh/id_rsa Initialized empty Git repository in /home/git/repositories/gitosis-admin.git/ Reinitialized existing Git repository in /home/git/repositories/gitosis-admin.git/
gitosis默认会把git仓库房子git账户的目录下:也就是/home/git下面
gitosis的有趣之处在于,它通过一个git仓库管理配置文件
仓库就放在/home/git/repositories/gitosis-admin.git, 我们需要对一个文件加个权限
pwd /home/git chmod 755 repositories/gitosis-admin.git/hooks/post-update
4-7:配置gitosis, 以控制git客户端的操作
git clone
cd gitosis-admin/ vi gitosis.conf [gitosis] loglevel = DEBUG
[group gitosis-admin] #gitosis-admin为git组名; witeable = gitosis-admin #gitosis-admin为仓库名; members =
#下面两个group配置实现把仓库teamwork的只读权限分配给git组team; #同时,把仓库teamwork的可写权限分配给git组team_ro; [group team] #team为git组名; writable = teamwork #teamwork为仓库名; members = b
git add -A git commit -m "init gitosis-admin config gitosis.conf" [master 2691646] init gitosis-admin config gitosis.conf 1 file changed, 4 insertions(+)
git push origin master password: Counting objects: 5, done.
4-8:创建一个仓库的存储位置,并初始化
mkdir -p /repo/top1
cd /repo/top1/ git init --bare
#在当前项目仓库中配置访问该仓库的用户信息: git config --add user.name "zxk" git config --add user.email "" git config --add user.name "bliss" git config --add user.email "" git config --add user.name "dummy" git config --add user.email "" 这些信息被添加在当前项目仓库的.git/config文件的[user]段中了;
如果git config命令加上--global选项,那些这些用户信息就会被添加到~/.gitconfig文件的[user]段中; 如: git config --global --add user.name "zhangsan" git config --global --add user.email ""
如果git config命令加上--file选项,那些这些用户信息就会被添加到--file所指定的文件的[user]段中;
4-9:在客户端直接clone该仓库就可以了;
git clone test 然后初始化第一个版本的数据并提交;