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

Git / Gitolite 的应用学习

139次阅读
没有评论

共计 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、短信等云产品特惠热卖中