PS:最近因为项目要用到”版本管理工具”,最后在权衡了svn和git后,大家决定用Git分布式版本控制系统.由于对git不熟悉,所以经过多方查找资料并成功的完整配置了git服务器后,特把此过程写下.
Git是非常著名的分布式版本控制系统,Gitosis则是通过Git与ssh架设中央服务器的软件.关于svn和git的区别,本文不多说,想了解的可以去google AND baidu .
-
服务端和客户端配置
服务器端:root 服务器端ip:192.168.1.100 win7客户端管理员user:administrator win7客户端管理员ip:192.168.1.101
-
服务器端:
git和Gitosis源码安装
-
先安装git依赖的包
yum -y install curl curl-devel zlib-devel openssl-devel perl perl-devel cpio expat-devel gettext-devel autoconf;
-
源码下载安装执行
命令:
wget https://git-core.googlecode.com/files/git-1.8.2.rc2.tar.gz tar -zxvf git-1.8.2.rc2.tar.gz cd git-1.8.2.rc2 ./configure --with-curl=/usr/local; make && make install
git下载地址:http://code.google.com/p/git-core/downloads/list
-
查看版本号,确实git是否安装成功
# git --version git version 1.8.2.rc2
-
安装gitosis
yum -y install python python-setuptools [root@localhost src]# git clone https://github.com/res0nat0r/gitosis.git [root@localhost src]# cd gitosis [root@localhost src]# python setup.py install #命令汇总: git clone https://github.com/res0nat0r/gitosis.git;cd gitosis;python setup.py install
-
-
win7客户端:
通过win7客户端客户端管理员的公钥来初始化服务器端gitosis,方便日后管理git库
*注意*必须先安装msysgit和msysgit工具
-
管理员ssh密钥生成和上传
$ ssh-keygen -t rsa
在C:\Users\Administrator\.ssh\下生成私钥id_rsa和公钥id_rsa.pub文件
-
将刚才生成的id_rsa.pub公钥传输到服务器端的电脑,也可以直接用U盘拷贝过去
$ scp /c/Users/Administrator/.ssh/id_rsa.pub git@192.168.1.100:/tmp
-
-
服务器端:
初始化gitosis
-
创建git用户,切换倒git用户下,初始化gitosis
[root@localhost ~] /usr/sbin/groupadd git [root@localhost ~] /usr/sbin/useradd -g git git [root@localhost ~] su git [git@localhost ~] gitosis-init < /tmp/id_rsa.pub #初始化空的 Git 版本库于 /home/git/repositories/gitosis-admin.git/ #重新初始化现存的 Git 版本库于 /home/git/repositories/gitosis-admin.git/ # id_rsa.pub已经无用,可删除 [git@localhost ~] rm /tmp/id_rsa.pub #命令汇总: cd;/usr/sbin/groupadd git;/usr/sbin/useradd -g git git;su git;gitosis-init < /tmp/id_rsa.pub;rm /tmp/id_rsa.pub
初始化后,在/home/git/repositories/下生成名为gitosis-admin仓库的gitosis-admin.git/目录,包含gitosis的配置文件
gitosis 的有趣之处在于,它通过一个git仓库来管理配置文件,仓库就放在了gitosis-admin.git目录
*提醒*以后所有的仓库都会生成在/home/git/repositories/目录下,具体参考下例。 -
修改文件的权限才可以在管理员客户端更新配置文件:
chmod 755 /home/git/repositories/gitosis-admin.git/hooks/post-update
-
在/home/git/repositories/下新建一个空的'teamwork'项目仓库供大家测试一下
[git@localhost ~]$ cd /home/git/repositories/ [git@localhost repositories]$ ls gitosis-admin.git [git@localhost repositories]$ mkdir teamwork.git [git@localhost repositories]$ cd teamwork.git/ [git@localhost teamwork.git]$ git init --bare #服务器端初始化仓库 #初始化空的 Git 版本库于 /home/git/repositories/teamwork.git/ #命令汇总: cd /home/git/repositories/;ls;mkdir teamwork.git;cd teamwork.git/;git init --bare;
-
-
win7客户端:
clone仓库gitosis-admin.git下来,以管理员的身份修改配置
-
在E:\新建gitdata文件夹
$ git clone git@192.168.1.100:gitosis-admin.git $ cd gitosis-admin
目录结构:
gitosis-admin
--keydir 所有用户包括管理员的公钥**.pub文件
----win7_Administrator.pub 管理员公钥
--gitosis.conf git版本库权限设置
-
把你们 team 所有人的 ssh 公钥文件都拿来,按名字重新命名一下,比如 user1.pub, user2.pub等,统统拷贝到 keydir 下
-
修改 gitosis.conf 文件,我的配置大致如下:
[gitosis] [group gitosis-admin] writable = gitosis-admin members = win7_Administrator [group team] writable = teamwork members = win7_Administrator user1 user2
这个配置文件表达了如下含义:gitosis-admin 组成员有 win7_Administrator,该组对 gitosis-admin 仓库有读写权限;team 组有 win7_Administrator user1 user2 三个成员和keydir下的文件名对应如(user1对应user1.pub)
-
当然目前这些配置文件的修改只是在你的本地,你必须推送到远程的 gitserver 上才能真正生效。加入新文件、提交并 push 到 git 服务器
$ git add . $ git commit -am "add teamwork project and users" $ git push origin master
好了,现在服务器就搭建完了,并且有一个空的项目 teamwork 在服务器上,空仓库是不能 clone 的,所以需要某一个有写 权限的人初始化一个版本
$ cd $ mkdir teamwork-ori $ cd teamwork-ori $ git init $ echo "test" > test.txt $ git add . $ git commit -am "initial version" $ git remote add oringin git@192.168.1.100:teamwork.git $ git push origin master
命令操作对应操作图
1.在E:\gitdata下新建teamwork-ori文件夹
2.本地初始化 git init 对应工具操作图
3.
git remote add oringin git@192.168.1.100:teamwork.git 对应工具操作图
4.git push origin master 对应工具操作图
到此为止 teamwork 已经有了一个版本了,team 的其他成员只要先 clone 一下 teamwork仓库,就可以任意玩儿了。(克隆方法可参考上面步骤中的图)$ git clone git@git@git-server-ip:teamwork.git
-
总结:
在初次安装git环境的时候,有些关键件需要理解.
1:首先必须在本地Windows环境中安装git工具也就是参考4
2:所有的仓库都会生成在/home/git/repositories/目录下
3.新建一个空的项目仓库要在/home/git/repositories/下 git init --bare 命令初始化仓库
4:空仓库是不能clone的,必须在客户端有人初始化一个提交一个版本
参考:
1.GIT服务器配置
2.Git 服务器 Gitosis 架设指南
3.Ubuntu下Git以及Github使用
4. 在Windows环境中使用版本管理工具Git