使用gitolite在服务器上建立一个git分支

说明:
  在服务器(IP:9.0.12.99)上创建一个git管理帐号zjr,密码是:123456,主要改帐号必须有sudo权限
  #useradd zjr 密码是123456
  客户端(IP:90.0.98.156)的帐号:zhaojr  密码是:zhaojr
  Git自己的帐号是: git  密码:git  所在的组为ssh
一、在服务器上安装git git-core
zjr@chinagps$sudo apt-get install git git-core
二、服务器安装openssh
zjr@chinagps$sudo apt-get install openssh-server
二、在git管理员帐号zjr下生成key文件
zjr@chinagps$ssh-keygen -t rsa -C zjr
zjr@chinagps$mv .ssh/id_rsa.pub  zjr.pub
三、将生成的SSH public key拷贝到服务器端的/tmp目录
zjr@chinagps$scp  zjr.pub  zjr@90.0.12.99:/tmp   (注意zjr帐号是90.0.12.99服务器上)
四、在90.0.12.99服务器端建立一个git帐号
zjr@chinagps$ sudo  adduser  --system  --shell /bin/bash  --gecos ‘Git SCM User’  --group  --disabled-password  --home  /home/git git 
或者:
zjr@chinagps$ sudo adduser \
zjr@chinagps$> --system \
zjr@chinagps$> --shell /bin/bash \
zjr@chinagps$> --gecos 'Git SCM User' \
zjr@chinagps$> --group \
zjr@chinagps$> --disabled-password \
zjr@chinagps$> --home /home/git git
五、切换到git帐号,下载Gitolite源码(服务器端)
zjr@chinagps$ sudo su git
git@chinagps$ cd $HOME
git@chinagps$ git clone http://github.com/sitaramc/gitolite
安装Gitolite(服务器)
git@chinagps$ mkdir -p ${HOME}/bin
git@chinagps$ ${HOME}/gitolite/install -to ${HOME}/bin
设置SSH Public key (服务器端)
git@chinagps$ ${HOME}/bin/gitolite setup -pk /tmp/HF.pub
其实,到这里,Gitolite已经安装完成。接下来就是添加Git项目,用户和设置Git项目的访问权限了。
六、git管理员帐号对gitolite的配置
可是若是你的服务器对SSH的权限作了限制,例如只有在sshusers用户组里的用户才能够SSH到服务器,那么你还须要作一个额外的设置
那就是添加git用户及之后的Gitolite的用户到sshusers用户组。不然,当你克隆Git项目时,你将被提示输入密码。以下图:git

若是出现上图中相似的状况,添加git用户到sshusers用户组,以下:
zjr@chinagps$ sudo adduser git sshusers
本次搭建没遇到过这种状况
七、克隆Gitolite管理库到git管理帐号zjr下面:
zjr@chinagps$ git clone git@90.0.12.99:gitolite-admin.git 
你能够看到在管理库里,有两个目录, conf/和keydir/,其中conf/下面有个名为gitolite.conf的配置文件。
① conf/gitolite.conf 用于Git项目配置,访问权限设置。
② keydir/ 用于存储用户的SSH public key(公钥)。
Git项目配置和访问权限设置请看Gitolite的README.txt文档。
八、对gitolite配置并创建一个初始化分支库
8.一、修改conf/gitolite.conf
添加一个新的Git项目
修改gitolite.conf
例如,新建一个名为git_test的Git项目,首先你须要在conf/gitolite.conf里注册git_test项目。假设你已经克隆了gitolite-admin.git项目,编辑conf/gitolite.conf,增长下面的内容。
repo haima/An03
    RW+ = @all

而后提交这部分修改,并使用如下命令字push到服务器上:
zjr@chinagps$ git push git@90.0.12.99:gitolite-admin.git 
8.二、在客户端帐号是zhaojr(IP:90.0.98.156)下生成公共的key文件,而且拷贝到
90.0.12.99服务器上的/home/zjr/gitolite-admin/keydir,以下:
zhaojr@ubuntu$ ssh-keygen -t rsa    生成公共key
zhaojr@ubuntu$ mv .ssh/id_rsa.pub   zhaojr.pub     重命名成zhaojr.pub
zhaojr@ubuntu$ scp zhaojr.pub zjr@90.0.12.99: /home/zjr/gitolite-admin/keydir  
九、将新添加的zhaojr.pub 公共key文件上传到gitolite-admin上去。切换到90.0.12.99上的zjr帐号.
以下:
zjr@~ $ cd /home/zjr/gitolite-admin/
zjr@~ $ git add keydir/zhaojr.pub
zjr@~ $ git commit –m  “add zhaojr user key to gitolite”
zjr@~ $ git config --global user.email chinagps@chinagps.com
zjr@~ $ git config --global user.name "chinagps"
注意这里的用户名称必须跟ssh-genkey –t rsa生成的chiangps.pub中的用户名称一致。
zjr@~ $ git push git@90.0.12.99:gitolite-admin.git   github

十、新建基础分支:
zjr@ ~ $git clone git@90.0.12.99:gitolite-admin.git
zjr@ ~ $ cd gitolite-admin
zjr@ ~ $ vim gitolite-admin/conf/gitolite.conf
添加:
repo SZ_IMX6_HAIMA_T8_PLATFORM
RW+     =   @all 

zjr@ ~ $ git add conf/gitolite.conf
zjr@ ~ $ git commit –m “add SZ_IMX6_HAIMA_T8_PLATFORM master branch config”
zjr@ ~ $ git push git@90.0.12.99: gitolite-admin.git
zjr@ ~ $git clone git@90.0.12.99: SZ_IMX6_HAIMA_T8_PLATFORM.git
zjr@ ~ $cd SZ_IMX6_HAIMA_T8_PLATFORM
zjr@ ~ $ touch test
zjr@ ~ $ git add test
zjr@ ~ $ git commit –m “add test git File”
zjr@ ~ $ git push origin master
切换到客户端帐号:
zhaojr@ ~ $ git clone git@90.0.12.99: SZ_IMX6_HAIMA_T8_PLATFORM.git
zhaojr@ ~ $ cd  SZ_IMX6_HAIMA_T8_PLATFORM
zhaojr@ ~ $ ls
 test
zhaojr@ ~ $ git branch
*master
zhaojr@ ~ $ git rm test
zhaojr@ ~ $ git commit –m “deletal test file”
zhaojr@ ~ $ git push git@90.0.12.99: SZ_IMX6_HAIMA_T8_PLATFORM.git
切换回管理员帐号同时切换到以前的SZ_IMX6_HAIMA_T8_PLATFORM初始化目录:
先更新本地的master分支:
zjr@ SZ_IMX6_HAIMA_T8_PLATFORM $ git pull origin master 
zjr@ SZ_IMX6_HAIMA_T8_PLATFORM $ ls  --------->显示为空,以前上test文件已经删除
将以前SVN上下载的T8项目代码目录trunk移动到SZ_IMX6_HAIMA_T8_PLATFORM目录:
zjr@ SZ_IMX6_HAIMA_T8_PLATFORM $mv ~/trunk  ./
zjr@ SZ_IMX6_HAIMA_T8_PLATFORM $cd trunk
先删除全部目录下的.svn .git  .gitignore三个文件:
zjr@ trunk $ find . -name "*.svn" | xargs rm -rf
zjr@ trunk $ find . -name "*.git" | xargs rm -rf
zjr@ trunk $ find . -name .gitignore | xargs rm –fr 或者find . -name .gitignore | xargs rm -rf
移动全部文件到SZ_IMX6_HAIMA_T8_PLATFORM目录:
zjr@ trunk $ mv  ./*  ~/ SZ_IMX6_HAIMA_T8_PLATFORM
zjr@ trunk $cd  ~/ SZ_IMX6_HAIMA_T8_PLATFORM
zjr@ SZ_IMX6_HAIMA_T8_PLATFORM $ rm –rf  trunk
添加文件并上传:
zjr@ SZ_IMX6_HAIMA_T8_PLATFORM $ git add ./
zjr@ SZ_IMX6_HAIMA_T8_PLATFORM $ git commit –m “add SVN T8 project to SZ_IMX6_HAIMA_T8_PLATFORM project git”
zjr@ SZ_IMX6_HAIMA_T8_PLATFORM $ git push origin master
在 origin/master分支基础上新建haima/MMI_An03分支:
zjr@ SZ_IMX6_HAIMA_T8_PLATFORM $ git branch –r  ------》查看远程分支
origin/HEAD -> origin/master
  origin/master
zjr@ SZ_IMX6_HAIMA_T8_PLATFORM $ git checkout -b haima/MMI_An03 origin/master
zjr@ SZ_IMX6_HAIMA_T8_PLATFORM $ touch test
zjr@ SZ_IMX6_HAIMA_T8_PLATFORM $ git add test
zjr@ SZ_IMX6_HAIMA_T8_PLATFORM $ git commit -m "add test file"
上传到新建的分支上:
zjr@ SZ_IMX6_HAIMA_T8_PLATFORM $ git push origin haima/MMI_An03
zjr@ SZ_IMX6_HAIMA_T8_PLATFORM $ git branch –r  ------->查看远程分支
  remotes/origin/HEAD -> origin/master
  remotes/origin/haima/MMI_An03
  remotes/origin/master

将本地分支与远程分支进行关联:
zjr@ SZ_IMX6_HAIMA_T8_PLATFORM $    git branch --set-upstream haima/MMI_An03 origin/ haima/MMI_An03
上传完成以后到客户端帐号进行验证:
zhaojr@ SZ_IMX6_HAIMA_T8_PLATFORM $ git pull  --->版本更新
zhaojr@ SZ_IMX6_HAIMA_T8_PLATFORM $ git branch –a
* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/haima/MMI_An03
  remotes/origin/master

当前处于master分支上
zhaojr@ SZ_IMX6_HAIMA_T8_PLATFORM $ git branch –r
显示远程服务器上的分支:
origin/HEAD -> origin/master
  origin/haima/MMI_An03
  origin/master
shell


十一、客户端使用:
海马:An03项目使用:
下载海马An03项目:
zhaojr@~$git clone git@90.0.12.99: SZ_IMX6_HAIMA_T8_PLATFORM.git –b haima/MMI_An03
zhaojr@ SZ_IMX6_HAIMA_T8_PLATFORM $ git branch –a
* haima/MMI_An03
  remotes/origin/HEAD -> origin/master
  remotes/origin/haima/MMI_An03
  remotes/origin/master

在这个分支基础上修改代码以后,使用如下命令字上传到haima/An03分支上:
zhaojr@ SZ_IMX6_HAIMA_T8_PLATFORM $
 git  push git@90.0.12.99: SZ_IMX6_HAIMA_T8_PLATFORM.gitubuntu

海马T8项目使用:
下载海马An03项目:
zhaojr@~$ git clone git@90.0.12.99: SZ_IMX6_HAIMA_T8_PLATFORM.git 
zhaojr@ SZ_IMX6_HAIMA_T8_PLATFORM $ git branch –a
* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/haima/MMI_An03
  remotes/origin/master

在这个分支基础上修改代码以后,使用如下命令字上传到T8的master分支上:
zhaojr@ SZ_IMX6_HAIMA_T8_PLATFORM $ git status
zhaojr@ SZ_IMX6_HAIMA_T8_PLATFORM $ git add  xxxx
zhaojr@ SZ_IMX6_HAIMA_T8_PLATFORM $ git commit –m “xxxx”
zhaojr@ SZ_IMX6_HAIMA_T8_PLATFORM $
 git  push git@90.0.12.99: SZ_IMX6_HAIMA_T8_PLATFORM.gitvim