阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Git / Gitolite 的应用学习

419次阅读
没有评论

共计 7415 个字符,预计需要花费 19 分钟才能阅读完成。

前面写了 svn 相关的配置和学习(见 http://www.linuxidc.com/Linux/2015-02/113440.htm),我们自己目前在用的也是 svn。其大多为开发在用,且权限也分配的很精细。所以一般不需要过多的操作什么。备份方面,除了脚本备份,还有共享存储。所以一般也不会有什么问题。

趁这几天顺便把 Git 也学习下,以防以后会用到这个。Git 的好处就不在此多说了,相比 svn 那也可以罗列很多出来。另一个,git 和 github 结合也是很好的,冲这个也应该学习下。

由于之前的 svn 用到了很精细的权限控制,所以这里结合 Gitolite 来一起学习下。所以就分 server 和 client。

一、Client 端:

Linux 下如果有就不需要在安装了,有没有用命令看下就好,直接在命令行敲 git 不报错即 OK。没有用 yum 安装 git 就好了,windows 下到官网下载安装包,直接下一步就 OK。Git 官网:http://git-scm.com/download/ 如果你打不开,那你懂的 ……

Windows 下安装 OK 了,会有 Git Bash 的命令行工具。点击进去后如下:

Git / Gitolite 的应用学习

运行正常的话,我们来生成个秘钥,来为以后管理 git 使用。我已经生成过了,所以这里命令就不执行了。执行 ssh-keygen -t rsa 一路回车即可在当前用户的家目录下生成秘钥。

Git / Gitolite 的应用学习

现在要把公钥重命名下 (为了方便识别用户) 并上传到准备安装 Git 的服务器做认证。

Git / Gitolite 的应用学习

目前为止,client 可以先做这么多了,如果是 Linux 的 client,也是一样的操作。相对更方便些。

二、Server 端:

目前 CentOS6 已经集成了 Git,所以无需再去安装 Git, 但是要用到 Gitolite,就需要安装了。

# cat /etc/issue
CentOS release 6.2 (Final)
 
# rpm -qa git
git-1.7.1-2.el6_0.1.x86_64
 
# 新建仓库目录
# mkdir /src/project -pv
 
# 新建 git 用户管理 git
# useradd git
 
# 做一个仓库的链接到家目录下的
# chown -R git.git /src
# su – git
$ ln -sv /src/project /home/git/repositories
 
# clone gitolite 仓库
$ git clone git://github.com/sitaramc/gitolite
$ pwd
/home/git/gitolite
$ ./install –help                    # 可以查看安装的一些参数说明等信息
$ mkdir ../bin                        # 在家目录创建一个 bin 目录来安装
$ ./install -to /home/git/bin/        # 就是 cp 目录下的 src 目录
 
# 使用公钥创建初始化版本库
$ gitolite setup -pk /tmp/chenfeng.pub 
Initialized empty Git repository in /src/project/gitolite-admin.git/
Initialized empty Git repository in /src/project/testing.git/
# 这样就说明成功了。
$ pwd
/home/git/repositories
$ ls
gitolite-admin.git  testing.git      # 可以看到两个目录,一个账户管理的,一个测试的
 
# 现在 client 就可以 clone 版本库,并进行用户管理和代码编写工作了。

签出版本前,我们可以测试下 ssh 的公钥认证是否成功:

Git / Gitolite 的应用学习

如上信息。说明 ssh 公钥认证已正常。而且也显示了对哪些库有什么权限。否则就要检查。

————————————– 分割线 ————————————–

GitHub 教程系列文章

GitHub 使用教程图文详解  http://www.linuxidc.com/Linux/2014-09/106230.htm 

Git 标签管理详解 http://www.linuxidc.com/Linux/2014-09/106231.htm 

Git 分支管理详解 http://www.linuxidc.com/Linux/2014-09/106232.htm 

Git 远程仓库详解 http://www.linuxidc.com/Linux/2014-09/106233.htm 

Git 本地仓库(Repository)详解 http://www.linuxidc.com/Linux/2014-09/106234.htm 

Git 服务器搭建与客户端安装  http://www.linuxidc.com/Linux/2014-05/101830.htm 

Git 概述 http://www.linuxidc.com/Linux/2014-05/101829.htm 

分享实用的GitHub 使用教程 http://www.linuxidc.com/Linux/2014-04/100556.htm 

————————————– 分割线 ————————————–

更多详情见请继续阅读下一页的精彩内容:http://www.linuxidc.com/Linux/2015-02/113441p2.htm

三、客户端签出版本库

服务器端的 Git 是为了用户共享项目的,所以不应该直接在服务器上操作。这里就在客户端签出并管理用户和版本库。

Git / Gitolite 的应用学习

从上面可以看到,版本库签出正常。可以看到签出的 gitolite-admin 管理库下有两个文件夹

conf: 配置用户权限的文件夹

keydir: 公钥存放位置

下面对这两个进行说明:

Git / Gitolite 的应用学习

从内容就很容易看到我们上次的 ssh 测试时看到权限的定义。此时我们把 testing 这个库的权限更改下来测试看下效果:

Git / Gitolite 的应用学习

上述的几个命令的意思:

git add .: 添加已修改的文件到暂存区

git commit -am “some information”: 把已修改的文件都添加到暂存区并提交到仓库

git push origin master: 推送到 Git 服务器到主版本

明白上述几个参数的意思后,现在来看在同步 testing 的库的时候看看是什么结果:

Git / Gitolite 的应用学习

此时就报错了,提示没有权限或者访问的库不存在。从这里就可以看到简单的权限控制了,其实跟 svn 的差别不是很大。

前面写了 svn 相关的配置和学习(见 http://www.linuxidc.com/Linux/2015-02/113440.htm),我们自己目前在用的也是 svn。其大多为开发在用,且权限也分配的很精细。所以一般不需要过多的操作什么。备份方面,除了脚本备份,还有共享存储。所以一般也不会有什么问题。

趁这几天顺便把 Git 也学习下,以防以后会用到这个。Git 的好处就不在此多说了,相比 svn 那也可以罗列很多出来。另一个,git 和 github 结合也是很好的,冲这个也应该学习下。

由于之前的 svn 用到了很精细的权限控制,所以这里结合 Gitolite 来一起学习下。所以就分 server 和 client。

一、Client 端:

Linux 下如果有就不需要在安装了,有没有用命令看下就好,直接在命令行敲 git 不报错即 OK。没有用 yum 安装 git 就好了,windows 下到官网下载安装包,直接下一步就 OK。Git 官网:http://git-scm.com/download/ 如果你打不开,那你懂的 ……

Windows 下安装 OK 了,会有 Git Bash 的命令行工具。点击进去后如下:

Git / Gitolite 的应用学习

运行正常的话,我们来生成个秘钥,来为以后管理 git 使用。我已经生成过了,所以这里命令就不执行了。执行 ssh-keygen -t rsa 一路回车即可在当前用户的家目录下生成秘钥。

Git / Gitolite 的应用学习

现在要把公钥重命名下 (为了方便识别用户) 并上传到准备安装 Git 的服务器做认证。

Git / Gitolite 的应用学习

目前为止,client 可以先做这么多了,如果是 Linux 的 client,也是一样的操作。相对更方便些。

二、Server 端:

目前 CentOS6 已经集成了 Git,所以无需再去安装 Git, 但是要用到 Gitolite,就需要安装了。

# cat /etc/issue
CentOS release 6.2 (Final)
 
# rpm -qa git
git-1.7.1-2.el6_0.1.x86_64
 
# 新建仓库目录
# mkdir /src/project -pv
 
# 新建 git 用户管理 git
# useradd git
 
# 做一个仓库的链接到家目录下的
# chown -R git.git /src
# su – git
$ ln -sv /src/project /home/git/repositories
 
# clone gitolite 仓库
$ git clone git://github.com/sitaramc/gitolite
$ pwd
/home/git/gitolite
$ ./install –help                    # 可以查看安装的一些参数说明等信息
$ mkdir ../bin                        # 在家目录创建一个 bin 目录来安装
$ ./install -to /home/git/bin/        # 就是 cp 目录下的 src 目录
 
# 使用公钥创建初始化版本库
$ gitolite setup -pk /tmp/chenfeng.pub 
Initialized empty Git repository in /src/project/gitolite-admin.git/
Initialized empty Git repository in /src/project/testing.git/
# 这样就说明成功了。
$ pwd
/home/git/repositories
$ ls
gitolite-admin.git  testing.git      # 可以看到两个目录,一个账户管理的,一个测试的
 
# 现在 client 就可以 clone 版本库,并进行用户管理和代码编写工作了。

签出版本前,我们可以测试下 ssh 的公钥认证是否成功:

Git / Gitolite 的应用学习

如上信息。说明 ssh 公钥认证已正常。而且也显示了对哪些库有什么权限。否则就要检查。

————————————– 分割线 ————————————–

GitHub 教程系列文章

GitHub 使用教程图文详解  http://www.linuxidc.com/Linux/2014-09/106230.htm 

Git 标签管理详解 http://www.linuxidc.com/Linux/2014-09/106231.htm 

Git 分支管理详解 http://www.linuxidc.com/Linux/2014-09/106232.htm 

Git 远程仓库详解 http://www.linuxidc.com/Linux/2014-09/106233.htm 

Git 本地仓库(Repository)详解 http://www.linuxidc.com/Linux/2014-09/106234.htm 

Git 服务器搭建与客户端安装  http://www.linuxidc.com/Linux/2014-05/101830.htm 

Git 概述 http://www.linuxidc.com/Linux/2014-05/101829.htm 

分享实用的GitHub 使用教程 http://www.linuxidc.com/Linux/2014-04/100556.htm 

————————————– 分割线 ————————————–

更多详情见请继续阅读下一页的精彩内容:http://www.linuxidc.com/Linux/2015-02/113441p2.htm

四、设置其他用户权限

现在本地的 windows 客户端已经是管理员权限了,假设我们又有一台 Linux 的客户端也需要使用,如果给他权限,下面就来演示:

首先生成秘钥:

# ssh-keygen -t rsa

# cd .ssh/

# mv id_rsa.pub 104.pub    # 重命名是为了方便识别的

# yum -y install lrzsz

# sz 104.pub                # 下载到 windows 上,并放到 windows 上的 gitolite-admin 下的 keysdir

# mkdir -pv /src/project    # 新建版本库的目录

添加完成后,我们在 windows 客户端操作,使 Git 服务器识别该主机的信息

Git / Gitolite 的应用学习

1、我们首先把 104 加到 testing 库的权限上

2、git status: 可以查看当前的工作区的状态信息(修改、新增等)

Git / Gitolite 的应用学习

Git / Gitolite 的应用学习

这里直接省略了 origin master 这参数,可能会有警告。上述就是提交后并推送到服务器。此时,104 这台机器对 testing 库就拥有了读写和更新的权限。这里的用户是和公钥的名称一致的。

在 Linux 104 客户端做测试:

# cd /src/project

# git clone git@10.95.10.103:testing

Initialized empty Git repository in /src/project/testing/.git/

warning: You appear to have cloned an empty repository.

# ls

testing

# 这里看到可以正常 clone 下一个 testing 库。因为 testing 库里面没有任何内容。所以提示为空

到此,添加用户以及授权基本完成。并学习了几个命令。

五、新建项目库并同步到服务器和其他用户协同工作

1、首先要先在服务器注册库并分配权限

Git / Gitolite 的应用学习

git diff: 可以显示修改的文件内容。

从上述可以看到

新增了一个用户组:@platform_team,且有两个用户 chengfeng 104

新增了一个库:platform,且该组有读写更新权限,所有人有读权限

Git / Gitolite 的应用学习

此时,push 后会自动在服务器端创建一个注册的库。

然后可以在 Linux 客户端和 windows 客户端同时 clone 下来 platform 库。

# git clone git@10.95.10.103:platform

Initialized empty Git repository in /src/project/platform/.git/

warning: You appear to have cloned an empty repository.

# ls

platform  testing

# 现在可以看到库了。

2、创建第一个 README 文件

Git / Gitolite 的应用学习

上面添加了一个 README 文件。并推送到了 Git 服务器。现在 Linux 客户端可以 pull 到最新的类容了。

# cd platform/

# git pull                    # 拉取 Git 服务器的最新数据

remote: Counting objects: 6, done.

remote: Compressing objects: 100% (2/2), done.

remote: Total 6 (delta 0), reused 0 (delta 0)

Unpacking objects: 100% (6/6), done.

From 10.95.10.103:platform

 * [new branch]      master    -> origin/master

# ls

README

# cat README 

This is Git Test File.

现在就可以看到两台机器都有数据了。权限也是生效的。

六、Git 的一些其他命令

# git commit -m “add two lines.”

[master 0cf7775] add two lines.

 Committer: root 

Your name and email address were configured automatically based

on your username and hostname. Please check that they are accurate.

You can suppress this message by setting them explicitly:

git config –global user.name “Your Name”

    git config –global user.email you@example.com

If the identity used for this commit is wrong, you can fix it with:

git commit –amend –author=’Your Name ‘

# 上述提示的是因为我们在 Linux 客户端第一次提交修改,所以需要设置一些参数,可以设置为全局参数,也可以每次提交时都写用户和邮箱。下面我们设置全局参数。

# git config –global user.name “104”

# git config –global user.email “104@admin.com”

# git add .

# git commit -m “add two lines.”

# git push origin master

Counting objects: 5, done.

Compressing objects: 100% (2/2), done.

Writing objects: 100% (3/3), 290 bytes, done.

Total 3 (delta 0), reused 0 (delta 0)

To git@10.95.10.103:platform

  fe2f251..0cf7775  master -> master

# 现在提交推送都正常了。

现在我们在 windows 上 checkout 出最新版本:

Git / Gitolite 的应用学习

现在假如我们做了一些错误的修改,并且提交了。想回到为提交之前的版本:

Git / Gitolite 的应用学习

上面可以看到我删除了两行,也添加了新行。

Git / Gitolite 的应用学习

可以看到已经回到了刚刚更新的状态。命令如下:

git reset –hard HEAD^: 回到所有内容到上个版本,上上个就是:HEAD^^, 上 10 个就是:HEAD~10

还有很多相关的命令需要慢慢去了解。

git revert HEAD: 撤销某次提交,并生成一个新的提交

命令太多。以后用到再说 …

如有错误,还请指出

Git 的详细介绍:请点这里
Git 的下载地址:请点这里

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-20发表,共计7415字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19351
评论数
4
阅读量
7994951
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
星哥带你玩飞牛NAS-14:解锁公网自由!Lucky功能工具安装使用保姆级教程

星哥带你玩飞牛NAS-14:解锁公网自由!Lucky功能工具安装使用保姆级教程

星哥带你玩飞牛 NAS-14:解锁公网自由!Lucky 功能工具安装使用保姆级教程 作为 NAS 玩家,咱们最...
支付宝、淘宝、闲鱼又双叕崩了,Cloudflare也瘫了连监控都挂,根因藏在哪?

支付宝、淘宝、闲鱼又双叕崩了,Cloudflare也瘫了连监控都挂,根因藏在哪?

支付宝、淘宝、闲鱼又双叕崩了,Cloudflare 也瘫了连监控都挂,根因藏在哪? 最近两天的互联网堪称“故障...
星哥带你玩飞牛NAS-5:飞牛NAS中的Docker功能介绍

星哥带你玩飞牛NAS-5:飞牛NAS中的Docker功能介绍

星哥带你玩飞牛 NAS-5:飞牛 NAS 中的 Docker 功能介绍 大家好,我是星哥,今天给大家带来如何在...
从“纸堆”到“电子化”文档:用这个开源系统打造你的智能文档管理系统

从“纸堆”到“电子化”文档:用这个开源系统打造你的智能文档管理系统

从“纸堆”到“电子化”文档:用这个开源系统打造你的智能文档管理系统 大家好,我是星哥。公司的项目文档存了一堆 ...
300元就能买到的”小钢炮”?惠普7L四盘位小主机解析

300元就能买到的”小钢炮”?惠普7L四盘位小主机解析

  300 元就能买到的 ” 小钢炮 ”?惠普 7L 四盘位小主机解析 最近...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
星哥带你玩飞牛 NAS-9:全能网盘搜索工具 13 种云盘一键搞定!

星哥带你玩飞牛 NAS-9:全能网盘搜索工具 13 种云盘一键搞定!

星哥带你玩飞牛 NAS-9:全能网盘搜索工具 13 种云盘一键搞定! 前言 作为 NAS 玩家,你是否总被这些...
三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Android 的最优解?

三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Android 的最优解?

  三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Andr...
开源MoneyPrinterTurbo 利用AI大模型,一键生成高清短视频!

开源MoneyPrinterTurbo 利用AI大模型,一键生成高清短视频!

  开源 MoneyPrinterTurbo 利用 AI 大模型,一键生成高清短视频! 在短视频内容...
多服务器管理神器 Nexterm 横空出世!NAS/Win/Linux 通吃,SSH/VNC/RDP 一站式搞定

多服务器管理神器 Nexterm 横空出世!NAS/Win/Linux 通吃,SSH/VNC/RDP 一站式搞定

多服务器管理神器 Nexterm 横空出世!NAS/Win/Linux 通吃,SSH/VNC/RDP 一站式搞...
小白也能看懂:什么是云服务器?腾讯云 vs 阿里云对比

小白也能看懂:什么是云服务器?腾讯云 vs 阿里云对比

小白也能看懂:什么是云服务器?腾讯云 vs 阿里云对比 星哥玩云,带你从小白到上云高手。今天咱们就来聊聊——什...