版本控制系统git + gitolite

前言:

Git简介

Linus在1991年创建了开源的Linux,从此,Linux系统不断发展,已经成为最大的服务器系统软件了。Linus虽然创建了Linux,但Linux的壮大是靠全世界热心的志愿者参与的,这么多人在世界各地为Linux编写代码。2005年,为了解决Linux系统的源码开发管理这一问题,Linus花了两周时间自己用C写了一个分布式版本控制系统,这就是Git,目前世界上最先进的分布式版本控制系统。2008年,GitHub网站上线了,它为开源项目免费提供Git存储,无数开源项目开始迁移至GitHub,包括jQuery,PHP,Ruby等等,Git迅速成为最流行的分布式版本控制系统。(目前,绝大多数Linux已自带git软件)


Gitolite简介

如果不是要和他人协同开发,Git 根本就不需要架设服务器。Git 在本地可以直接使用本地版本库的路径完成 git 版本库间的操作。但是如果需要和他人分享版本库、协作开发,就需要能够通过特定的网络协议操作 Git 库。Git 支持的协议很丰富,架设服务器的选择也很多,不同的方案有着各自的优缺点。Gitolite 是一个轻量级的开源项目,使用SSH公钥认证,能做到分支级的权限控制。对于个人,中小型企业及一些开源项目而言,如果没有特殊的要求,Gitolite提供的服务已经足够用。

 

 

 

 

 

 

Gitolite安装

实验环境:

Gitolite服务器:

[root@linux-node1-gitolite-server ~]# cat /etc/redhat-release

CentOS Linux release 7.4.1708 (Core)

[root@linux-node1-gitolite-server ~]# ifconfig |awk 'NR==2 {print $2}'

172.16.48.132

 

1. 安装相应的依赖环境

[root@linux-node1-gitolite-server ~]# yum install perl openssh git -y

 

2. 创建git用户,生成用于管理gitolite的公钥和私钥

[root@linux-node1-gitolite-server ~]# useradd git

[root@linux-node1-gitolite-server ~]# echo git|passwd --stdin git

[root@linux-node1-gitolite-server ~]# ssh-keygen

[root@linux-node1-gitolite-server ~]# cp /root/.ssh/id_rsa.pub /tmp/admin.pub

 

3. 切换到git用户下创建安装目录

[root@linux-node1-gitolite-server ~]# su - git

[git@linux-node1-gitolite-server ~]$ mkdir bin

 

4. 下载gitolite源码

[git@linux-node1-gitolite-server ~]$ git clone https://github.com/sitaramc/gitolite.git

 

5. 安装gitolite

[git@linux-node1-gitolite-server ~]$ ./gitolite/install -to /home/git/bin/

[git@linux-node1-gitolite-server ~]$ /home/git/bin/gitolite setup -pk /tmp/admin.pub

 

6. 切换到root用户下,clone gitolite-admin.git

[git@linux-node1-gitolite-server ~]$ su - root

[root@linux-node1-gitolite-server ~]# git clone git@172.16.48.132:gitolite-admin.git

 

7. 至此,成功clone下gitolite-admin目录即gitolite安装成功。

[root@linux-node1-gitolite-server ~]# ls

anaconda-ks.cfg  gitolite-admin

 

注:gitolite是通过管理gitolite-admin来对仓库进行授权管理的。

1. conf为配置文件目录

2. keydir为git客户端公钥目录

 

 

 

协作使用

开发人员1服务器配置:

[root@linux-node0-manager ~]# cat /etc/redhat-release

CentOS Linux release 7.4.1708 (Core)

[root@linux-node0-manager ~]# ifconfig|awk 'NR==2 {print $2}'

172.16.48.129

 

1. 在开发人员1服务器上生成公钥私钥

[root@linux-node0-manager ~]# ssh-keygen -f ~/.ssh/chentaicheng

[root@linux-node0-manager ~]# ls ~/.ssh/

chentaicheng  chentaicheng.pub

 

2. 将公钥chentaicheng.pub存放到gitolite服务器的gitolite-admin/keydir目录下

[root@linux-node0-manager ~]# scp -P22 -r -p ~/.ssh/chentaicheng.pub root@172.16.48.132:gitolite-admin/keydir

 

3. 访问仓库配置文件

版本控制系统(git + gitolite)

 

 

gitolite服务器上配置chentaicheng密钥对应的仓库及权限:

1. 检查chentaicehng.pub是否存在gitolite-admin/keydir目录下

[root@linux-node1-gitolite-server keydir]# pwd

/root/gitolite-admin/keydir

[root@linux-node1-gitolite-server keydir]# ls

admin.pub  chentaicheng.pub

[root@linux-node1-gitolite-server keydir]#

 

2. 配置chentaicheng密钥对应的仓库

版本控制系统(git + gitolite)

 

3. 配置git

[root@linux-node1-gitolite-server gitolite-admin]# pwd

/root/gitolite-admin

[root@linux-node1-gitolite-server gitolite-admin]# git config --global user.email "chentaicheng@qq.com"

[root@linux-node1-gitolite-server gitolite-admin]# git config --global user.name "chentaicheng"

 

4. 将修改后的配置及公钥更新到gitolite服务器

[root@linux-node1-gitolite-server gitolite-admin]# git add *

[root@linux-node1-gitolite-server gitolite-admin]# git commit -m 'add new repo ctc by chentaicheng'

[root@linux-node1-gitolite-server gitolite-admin]# git push

 

检查开发人员1是否能获取仓库ctc的读写权限

版本控制系统(git + gitolite)

 

 

Clone ctc仓库并增加内容然后提交到远程仓库上

[root@linux-node0-manager ~]# git clone gitolite:ctc         

Cloning into 'ctc'...

Enter passphrase for key '/root/.ssh/chentaicheng':

warning: You appear to have cloned an empty repository.

[root@linux-node0-manager ~]# ls

anaconda-ks.cfg  ctc

[root@linux-node0-manager ~]# cd ctc/

[root@linux-node0-manager ctc]# git config --global user.email "791582297@qq.com"

[root@linux-node0-manager ctc]# git config --global user.name "CTC"

[root@linux-node0-manager ctc]# git add readme.txt

[root@linux-node0-manager ctc]# git commit -m 'add readme.txt'                   

[root@linux-node0-manager ctc]# git push origin master

至此,git+gitolite部署完毕。

 

 

 

 

 

 

 

 

 

 

 

开发人员2获取开发人员1push的代码

开发人员2环境:

[root@linux-node2-develop ~]# cat /etc/redhat-release

CentOS Linux release 7.4.1708 (Core)

[root@linux-node2-develop ~]# ifconfig|awk 'NR==2 {print $2}'

172.16.48.133

 

1. 在开发人员2主机上生成密钥对,并将密钥传输到gitolite服务的gitolite-admin/keydir目录下

[root@linux-node2-develop ~]# mkdir .ssh

[root@linux-node2-develop ~]# ssh-keygen -f .ssh/develop

[root@linux-node2-develop ~]# scp -P22 root@172.16.48.132:gitolite-admin/keydir

 

2. 配置develop密钥对应的仓库

版本控制系统(git + gitolite)

 

 

3. gitolite修改配置文件,并更新到gitolite服务器上,使开发人员2对ctc仓库具有读写权限。

版本控制系统(git + gitolite)

[root@linux-node1-gitolite-server gitolite-admin]# pwd

/root/gitolite-admin

[root@linux-node1-gitolite-server gitolite-admin]# git add *

[root@linux-node1-gitolite-server gitolite-admin]# git commit -m 'add develop'

[root@linux-node1-gitolite-server gitolite-admin]# git push

 

4. 开发人员2获取开发人员1push的代码

[root@linux-node2-develop ~]# git clone gitolite:ctc

[root@linux-node2-develop ~]# ls

anaconda-ks.cfg  ctc

[root@linux-node2-develop ~]# cd ctc/

[root@linux-node2-develop ctc]# ls

readme.txt

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Git安装和使用 Git安装和使用 刚开始用git的小白适用,,转自http://www.cnblogs.com/qijunjun/p/7137207.html 实际项目开发中,我们经常会用一些版本控制器来托管自己的代码,今天就来总结下Git的相关用法,废话不多说,直接开写。 目的:通过Git管理g
fatal: remote origin already exists.解决方法 第一个问题git remote add origin**************fatal: remote origin already exists.(报错远程起源已经存在。)上网查了下,有很多小白遇到过这个问题,以
git常用命令(二)查看历史记录 git log [--pretty=oneline] [ --oneline] / reflog Eniac-W 于 2020-10-18 18:12:38 发布 2368 收藏 3分类专栏: git 文章标签: git版权 git专栏收录该内容10 篇文章0 订阅
git之如何把本地文件上传到远程仓库的指定位置 git专栏收录该内容2 篇文章0 订阅订阅专栏2018.11.26添加内容: 对于自己的仓库,我们建议将远程仓库通过clone命令把整个仓库克隆到本地的某一路径下。这样的话我们从本地向远程仓库提交代码时,就可以直接把需要提交的文件拖到我们之前克隆下来的
代码规范之 lint-staged 在代码提交之前,进行代码规则检查能够确保进入git库的代码都是符合代码规则的。但是整个项目上运行lint速度会很慢,lint-staged能够让lint只检测暂存区的文件,所以速度很快。 安装与配置 安装husky和lint-staged: yarn add hu
方法:1、文件没有git操作时用“git checkout--文件”命令还原;2、文件提交到暂存区时用“git reset HEAD”命令回退当前版本还原;3、文件提交到仓库区时用“git reset HEAD^”命令回退上一个版本还原。 本文操作环境:Windows10系统、Git2.30.0版、
使用Git将本地文件提交到远程仓库 一 操作准备条件: git远程仓库已经建好了,本地文件已经存在了,现在要将本地代码推到git远程仓库保存。 解决办法如下: 1、(先进入项目文件夹)通过命令 git init 把这个目录变成git可以管理的仓库 git init 2、把文件添加到版本库中,使用命令
GitHub克隆代码到本地全教程 因为工作原因更换电脑,想要从GitHub上拉取代码的话需要重新配置ssh keys,时间过的久了怕忘记就把步骤给记录下来。 具体步骤: 1.安装git 这我就不说了 2.在TortoiseGit的安装文件中找到 puttygen.exe应用程序 ,默认应该都是 :C
github上传项目的时候报出git@github.com: Permission denied (publickey). fatal: Could not read from remote repo 前言 会不会有程序员小伙伴在刚开始使用github的时候上传项目的时候困难重重,但是又基于自己本身
查看历史 git log --pretty=onelinegit log (然后一直按enter键) 一个是切换根据历史里面的id切换git checkout ID git log 需要不断按enter键出来历史提交记录 git log --pretty=oneline 是直接出来历史记录
Git工作原理及常用命令 欧怼怼发布于 2020-12-08 git介绍 git(读音/ɡɪt/)是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。git是Linus Torvalds为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件。 git
git git提交项目的具体流程 git项目流程:以下主要有3个角色:负责人、成员A、成员B(若负责人也要修改代码,则负责人同时兼任2个角色:负责人、成员) 主要负责人:搭建项目架构且提交到git上1.github官网登录后,新建仓库,生成地址url,复制线上仓库.git结尾的地址url2.在一个空
git上传项目全部流程 一、下载git 进入网址:https://git-scm.com/downloads; 点击中的Download 2.16.0 for Windows; 在中选择蓝色字段点击,根据电脑64或32位选择适合的下载,点击即可进行下载,下载完成后傻瓜式安装,一直点击下一步即可完成安
Your local changes to the following files would be overwritten by checkout问题的解决 于 2018-07-17 11:38:27 发布 Git 的本地版本管理有三个部分 名称	说明工作区(Working Directory)	
Git配置SSH Keys步骤使用教程 1.若是首次安装使用git,先配置用户名称和邮箱(如果有就不需要配置) 打开Git Bash,输入 git config --global user.name "姓名"git config --global user.email &quot
基本配置完成,接下来就是上传你要上传的项目了。 1、初始化git 进入你要上传的项目的文件夹,在文件夹内鼠标右击,选择“Git Bash Here”打开git命令行,输入: $ git init 目的是初始化git,并且会创建个“.git”文件夹,里面有个“config”就是用来保存远程厂库路径地址
本篇内容主要讲解“gitee如何上传代码”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“gitee如何上传代码”吧! ...
这篇“从gitee上下的代码如何用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这...
这篇文章主要介绍“gitee如何下载仓库里的项目”,在日常操作中,相信很多人在gitee如何下载仓库里的项目问题上存在疑惑,小编查阅了各式资料,整理出简单好用的...
本篇内容主要讲解“怎么在Gitee上更新代码”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么在Gitee上更新代...