Chinaunix首页 | 论坛 | 博客
  • 博客访问: 532884
  • 博文数量: 39
  • 博客积分: 1046
  • 博客等级: 准尉
  • 技术积分: 895
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-10 16:50
文章分类

全部博文(39)

文章存档

2013年(8)

2012年(31)

分类: LINUX

2013-03-04 21:14:41

真心累,不过总算能用了

一开始按照《git权威指南》折腾,但是在最后一步不小心把版本库配置到root用户身上了,悲剧,只好重来。

*对了,提醒下,《git权威指南》里的安装方法要小心。客户端方式安装已经过时了,不好用了,所以要么直接安装 apt-get 软件源里的,要么源代码安装,至于该书作者自己的那个版本,不推荐初学者折腾,专家级的可以自己把握。

这里就讲下最简单的方式。apt-get

服务器和客户端都是ubuntu12.04

1.首先直接登录root帐号,apt-get install git-core    (在服务器上执行)

2.然后,apt-get install gitolite            (在服务器上执行)

3.然后,创建ssh无口令登录的公钥   ssh-keygen -f ~/.ssh/admin         (本地,创建这个的时候会要你输入一个类似密码的东西,不用太复杂,但请记牢了)

4.然后,复制到服务器上,scp ~/.ssh/admin.pub  server:/tmp/admin.pub  (server 就是服务器地址)

5.然后,再到服务器上,创建git用户 adduser --system --shell /bin/bash  --group  git  (在服务器上执行)

6.切换到git用户 su git

7.执行gl-setup /tmp/admin.pub (没错就是刚才scp过来的公钥)

到这步,gitolite已经安装并配置完毕了

然后,在本地 获取 管理用的版本库 gitolite-admin (克隆版本库就不多说了,会用git的我想不必多讲吧)

在gitolite-admin 的conf文件夹下gitolite.conf 文件定义了版本库以及用户组和权限,在keydir目录下放置的是用户的公钥,所做的更改直接提交并推送到服务器上,就可以实现对git服务器的管理。


然后,遇到一个问题,我是管理员,但是我平时开发提交代码的时候,不想用管理员帐号,那怎么办?

首先想到的就是添加git用户:ssh-keygen -f ~/.ssh/personball   生成的personball.pub直接丢到gitolite-admin/keydir 目录下 ,然后到conf目录下编辑gitolite.conf 文件,添加版本库定义  

repo  newone

    RW+ = personball


git add .  

git push

这就添加了用户和版本库以及做好权限定义了
**注:如果客户端是windows,使用Puttygen生成公钥和私钥:参数为SSH-2 RSA,1024位,按需加上密码。

然后到其他地方新建目录newone

git init


git config user.name personball 
git config user.email personball@163.com 
git remote add master git@server:newone.git


这就行了,然后添加一个文件,提交试试。

touch readme

git add readme

git commit -m ‘the first commit’

git push master master 

出问题了,提示说,git服务器拒绝了admin帐号对这个版本库的写操作!

其实原因很简单,无口令ssh登录,默认使用了之前那个用于管理git的admin身份。那怎么办呢?

于是我翻了翻《git权威指南》,看了下ssh主机别名这节,找到了解决方法。

首先去~/.ssh/下找config文件,没有的话,就自己新建一个

添加以下内容

host newone               (这是别名)

user git                         (注意这里要写服务器上的用户,访问的当然是git用户)

hostname 1.1.1.1        (这是服务器地址,可以用域名)

port 22

identityfile ~/.ssh/personball  (这才是我们需要使用的ssh身份)

然后呢,然后就需要改一下 版本库中的设置了

到newone版本库中, 进入.git目录,找到config文件

修改其中的server部分(服务器地址部分,可能是IP 也可能是域名)为我们刚在.ssh中config文件中定义的别名 newone

如: url = git@newone:newone.git

当然别名不一定要和版本库名相同。

再试一下 git push master master 就ok了。


最后,感谢一下前辈们的经验

参考:《git权威指南》

参考:




阅读(8167) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~