1、简介
1.1 git 简介
Linus在1991年创建了开源的Linux,从此,Linux系统不断发展,已经成为最大的服务器系统软件了。Linus虽然创建了Linux,但Linux的壮大是靠全世界热心的志愿者参与的,这么多人在世界各地为Linux编写代码。2005年,为了解决Linux系统的源码开发管理这一问题,Linus花了两周时间自己用C写了一个分布式版本控制系统,这就是Git,目前世界上最先进的分布式版本控制系统。
2008年,GitHub网站上线了,它为开源项目免费提供Git存储,无数开源项目开始迁移至GitHub,包括jQuery,PHP,Ruby等等,Git迅速成为最流行的分布式版本控制系统。
1.2 gitolite简介
如果不是要和他人协同开发,Git 根本就不需要架设服务器。Git 在本地可以直接使用本地版本库的路径完成 git 版本库间的操作。但是如果需要和他人分享版本库、协作开发,就需要能够通过特定的网络协议操作 Git 库。Git 支持的协议很丰富,架设服务器的选择也很多,不同的方案有着各自的优缺点。在Git服务管理工具这个领域,主要有三种流行的方案,它们分别是:
Gitosis - 轻量级, 开源项目,使用SSH公钥认证,只能做到库级的权限控制。目前项目已经停止开发,不再维护。
Gitolite - 轻量级,开源项目,使用SSH公钥认证,能做到分支级的权限控制。
Git + Repo + Gerrit - 超级重量级,集版本控制,库管理和代码审核为一身。可管理大型及超大型项目。
Gitolite 是一款 Git 授权管理工具,那么它具体是怎样的呢?我们姑且从它的几个特性来简单了解下:
在服务器端,使用一个 unix 用户作为远程访问的对象
为多用户提供访问权限,但他们不是真正的用户,不会获得 shell 权限
控制对多个 git 仓库的访问,读访问被repo层控制,写访问在 branch/tag/file/directory 层控制,包括谁能够 rewind,create 以及 delete branches/tags
能够不经过root允许进行安装,假设git和perl已经被安装了 (这句话不懂,暂时直译过来)?
认证通常采用sshd,但是也可以使用httpd
能够简化你的仓库路径,类似 GitHub 那样,例如:git@your_server.com:your-project.git
(下面介绍怎么安装Git服务器gitolite,以及怎么建立仓库、添加用户等操作,本篇文章不会介绍太多的Git本身的命令,有兴趣的大家可以自己去网上搜搜)
2、安装git
2.1 安装基础依赖包(在git服务器上操作 )
#yum install -y curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-devel 2.2 安装git(在git服务器上操作 )
#yum -y install git 2.3 安装openssl-server(在git服务器上操作 )
( ssh访问需要使用openssh-server)
#yum -y install openssh-server 2.4 添加git管理用户和组(在git服务器上操作 )
###添加git组
#groupadd git
###添加git用户并把它加入git组
#adduser -s /bin/bash -g git git
###设置git的密码(我随便设置密码为123456,实际中大家把这个密码设置得复杂点,安全)
#passwd git
2.5 生成ssh key(在git服务器上操作 )
git需要使用ssh访问,需要生成一组ssh key,切换到git用户下操作:
#su git
$ ssh-keygen -t rsa
$cd .ssh/
$ cp> 3、安装gitolite
3.1 在git用户下创建bin目录(在git服务器上操作 )
$ pwd
/home/git/
$ mkdir bin
3.2 从远端克隆gitolite(在git服务器上操作 )
$ git clone git://github.com/sitaramc/gitolite
$ ls
3.3 安装gitolite至bin目录(在git服务器上操作 )
$ gitolite/install -to $HOME/bin
$ cd bin/
$ ls
$ mv .ssh/authorized_keys ~/git.pub
$ ls
$cd /home/git/
$ ~/bin/gitolite setup -pk ~/git.pub
$ ls
bin gitolite git.pub projects.list repositories
$ls repositories
###可以用git用户ssh到127.0.0.1进行验证一下,可以看到下面的正常验证显示
$ ssh git@127.0.0.1
gitolite安装完成,从上面ls命令查到看,成功安装gitolite后,会自动生成一个“repositories”目录,此目录下面有两个默认的仓库。一个是testing.git用来测试、另一个gitolite-admin.git就是用来管理git用户和版本库,所以需要创建一个管理员git用户来管理。
3.3 生成管理员仓库,不需要输入密码(在git服务器上操作)
$ git clone git@127.0.0.1:gitolite-admin
###上条命令执行后,会在当前目录下面生成gitolite-admin目录
$ ls
$ cd gitolite-admin/
$ ls
$ls conf/
$ls keydir/
说明:进入管理员仓库后,可以看到“conf”、“keydir”这两个目录。
conf/gitolite.conf:是添加用户、仓库的配置文件
keydir:是放对应用户的公钥目录
4、git客户端验证
4.1 centos客户端验证(在centos客户端上操作)
###比如我用另一台centos服务器做为客户端,在上面创建用户ganbing做为git客户端的用户
#yum -y install git
#useradd ganbing
#passwd ganbing
###切换ganbing用户,生成公钥,并把公钥拷贝到git服务器的"gitolite-admin"仓库中
# su - ganbing
$ ssh-keygen -t rsa
#scp .ssh/id_rsa.pub git@git服务器IP:gitolite-admin/keydir/ganbing.pub
接下来几步很重要,大家要看清楚在哪里操作,到了下面的操作别搞混了,看清楚我写的在哪操作
###在git服务器keydir目录中可以看到,git客户端ganbing的公钥已经拷贝过来了:
$ ls keydir/
###下面配置gitolite.conf,添加一个仓库“gb”,并把管理员git用户、git客户端用户ganbing配置为可读写这个gb仓库:
$ vim conf/gitolite.conf
上面的含义是:
第1个repo,默认的管理员仓库gitolite-admin,用户git具有(读写)RW权限,和强制更新(+)的权限。
第2个repo,默认的测试仓库testing,@all所有用户都具有RW+权限。
第3个repo,我手动添加了一个gb仓库,用户git、ganbing具有(读写)RW权限。
更多参数说明在此不做详细的介绍,这些参数都很简单,还可以定义组,大家上网自行查阅资料。
将配置推送到gitolite服务器(在git服务器上操作)
走到这一步了,你是不是以为已经结束了,可以在客户端git clone了呢。其实还没有,我们刚才在gitolite.conf配置中添加了gb仓库,不是保存这个文件就会生效。我们需要提交才能生效:
###先在git服务器上也配置两个全局变量,名字自己随便定义就行,就是别和今后的git客户端重名就行:
$git config --global user.email "git@123.com"
$git config --global user.name "git"
###提交修改,所有的提交修改都是下面三条命令,以后添加新的仓库和git用户也是用下面这三条命令,还有在客户端上提交也是这三条命令,一定要记清楚:
$ git add .
$ git commit -m "add new user and new repo's gb"
$ git push origin master
###提交完之后,进入repositories目录,查看仓库中是不是多了一个gb.git:
$ cd repositories/
$ ls
最后,我们回到centos客户端(在centos客户端上操作)
###第一次使用也需要表明身份,注意切换用户:
$git config --global user.email "ganbing@123.com"
$git config --global user.name "ganbing"
###测试git clone gb仓库:
$ cd /home/ganbing/
$ git clone git@git服务器IP:gb
提示:上面的警告不用管,它告诉你克隆的一个空的仓库,因为gb仓库本身啥也没有
###ls查看gb仓库已经clone过来了:
$ls
###进入gb仓库,你添加个a.txt文件提交上去:
$ touch a.txt
$ git add .
$ git commit -m "add file a.txt"
$$ git push origin master
如果大家的操作跟我上面一样,说明用centos客户端验证是OK的。毕竟没有谁整天用centos系统,我想大家多数都用windows系统,下面我就以windows系统来验证一下。
4.2 windows客户端验证
首先,你的电脑上要安装git程序,在这里我就不演示如何安装git,在D盘新建一个文件夹 testgit,进入这个文件夹,右键选择Git Bash,如下图(在windows客户端上操作) :
生成ssh公钥,并把公钥拷贝到git服务器,当然你把公钥给git服务器的管理员也可以(在windows客户端上操作) :
$ ssh-keygen -t rsa
如上图所示:我这台电脑已经生成过,所以我输入n,这里也指明公钥的路径((/c/Users/Administrator/.ssh/id_rsa))
###进入.ssh目录,把id_rsa公钥拷贝到服务器,并把公钥重命名为windows_ganbing.pub:
$ cd /c/Users/Administrator/.ssh/
$ scp>
提示:如果这台windows是公司的开发人员,他需要把公钥发给git服务器管理员,毕竟不给告诉其他人git服务器管理的密码。
###先在服务器上查看windows_ganbing.pub公钥拷贝过来了没有:
$ cd /home/git/gitolite-admin/keydir/
$ls
###配置gitolite.conf文件,把winows_ganbing用户加进来:
提示:上面用户之间用空格隔开就可以,你的公钥文件是什么名字,这里就输入什么名字
###提交修改,上面说过了,用3条命令搞定:
$ git add .
$ git commit -m "add user windows_ganbing"
$ git push origin master
最后,git clone进行验证(在windows客户端上操作):
还是进入D盘-testgit目录,打开Git Bash:
$ git clone git@git服务器IP地址:gb
###检查gb仓库是否clone过来了:
如上图所示,我们在windows客户端也测试成功,大家可以按我的步骤方法试一下,有问题的朋友可以留言一起探讨!!!
至于用MAC本客户端我就不演示了,我也没有买MAC本,哈哈。。。。
运维网声明
1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网 享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com