debian使用gitolite搭建git服务器

来源:互联网 发布:ubuntu删除谷歌输入法 编辑:程序博客网 时间:2024/06/05 05:28

debian版本:8.6

git版本:2.11.0

(1)安装git

直接进入https://github.com/git/git,点击releases,选择最新版本下载,下载完后使用命令安装

(2)添加git用户

sudo adduser --system --shell /bin/bash --group git

设置git密码 :

passwd git

(3)配置git用户信息

        进入git用户

         su git

         配置git用户信息作用是:每次对git仓库操作时标记git的身份

         git config --global user.name "XXXX" 

         git config --global user.email "XXXX@XX.XX"

(4)生成ssh key,用于创建仓库

切换到git用户下

su git

ssh-keygen

cd .ssh

cp id_rsa.pub authorized_keys

(5)安装gitolite

在git目录下:

git clone git://github.com/sitaramc/gitolite //复制gitolite的源码

mkdir bin //该目录用于安装gitolite

~/gitolite/install -to ~/bin //安装gitolite到bin
mv ~/.ssh/authorized_keys ~/git.pub //复制git.pub到git目录下

~/bin/gitolite setup -pk ~/git.pub //使用gitolite生成git的仓库

执行以上命令后,在git目录下生成了repositories、projects.list文件

其中repositories目录下生成了gitolite-admin.git、testing.git文件,gitolite-admin.git为用户管理仓库,用于管理用户权限

(6)创建远程仓库

在git用户下,repositories目录下,执行:

git init --bare XXXX.git //执行git init --bare命令后,创建了一个项目的远程仓库(裸库),该仓库不包含项目的工作空间,

//仅用于管理其他本地仓库,一般建立在服务器上,在未初始化前,其不能被clone

(7)根据已有项目初始化远程仓库

退出git用户,在其他用户下,进入项目根下,执行:

git init //执行git init命令后,在项目根目录下生成一个.git文件,用于管理本地仓库的项目版本

git add . //将工作区文件(conf与keydirs)提交到暂存区stage

git commit -m "init XXXX"//将暂存区文件提交到版本库中,其中-m后面被“ ”的字符串是发送的消息,可以任意写

git remote add origin git@192.168.XXX.XXX:XXXX //为本地仓库添加一个远程仓库,其中 origin相当于远程仓库的引用,可以自定义

git push origin master//将本地仓库中文件提交到远程仓库,master为git默认的仓库分支,详细了解分支的知识,请自行搜索

//如果以上步骤中没有执行第(3)步,会出现错误,提醒配置git的用户名和邮箱

(8)生成gitolite-admin

在git目录下执行:

git clone git@192.168.XXX.XXX:gitolite-admin //从repositories中的gitolite-admin.git仓库中clone一个gitolite-admin项目(gitolite本身是一个git项目),用于管理用户权限
执行完后,在git目录下生成了gitolite-admin文件,gitolite-admin目录下gitolite.conf文件用于控制用户权限,keydirs用于保存其他用户的XXX.pub文件(公匙)。

 (9)windows系统创建git用户

windows安装git for windows后,右键点击git bash命令,在命令行中执行:

git-config user.name XXX

git-config user.email XXX@xxx.com

     ssh-keygen -t rsa -C "XXXXX@XX.XX"     //可以根据您的邮箱生成.ssh文件     更改id_rsa.pub的名称为wmg.pub,对应的id文件名也更改为wmg
在.ssh文件下右键点击git bash命令,执行:

scp wmg.pub git@192.168.XX.XX:gitolite-admin/keydir //将wmg.pub文件上传至服务器git用户下的gitolite-admin/keydir目录中

(10)配置用户权限

在作为服务器的机器的git用户下,进入gitolite-admin/conf目录,执行:

sudo gedit gitolite.conf

在gitolite.conf文件中添加:

repo XXX //repo后面为仓库名,应与repositories中的XXXX.git的文件名(去除后缀.git)对应

RW+ = git wmg //=右边的名称应与keydirs中的文件名(去掉后缀)对应

         下一步,在gitolite-admin目录下执行:

        git add .        //gitolite-admin是从gitolite-admin.git(远程仓库)clone的,因此gitolite-admin是本地仓库,其目录下有一个隐藏文件.git

        git commit -m "add program and user wmg"            

        git push origin master          

(11)从远程仓库clone项目

       首先需要在git目录下执行:

       git clone git@192.168.40.178:XXXX                    //将项目clone到git用户下,在我的实验中发现,如果不执行这个步骤,

                                                                                           //在其他用户的目录下(或其他机器上)无法从远程仓库clone想要的项目,原因未知

      下一步,在其他服务器的用户下(或其他机器)执行:

      git clone git@192.168.40.178:XXXX                     //clone之前初始化过的项目,clone后项目包含一个.git文件(本地仓库)

(12)idea从远程仓库clone项目

       点击vcs

       点击check out from version control      

       选择git

       在出现的对话框git repositrory URL中输入:git@192.168.XXX.XXX:XXXX

      Parente Directory中输入idea的工作空间

      Directory Name输入项目名称

      点击clone即可

0 0
原创粉丝点击