前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Git学习笔记(git应用)

Git学习笔记(git应用)

作者头像
没有故事的陈师傅
发布2019-07-27 21:14:42
9340
发布2019-07-27 21:14:42
举报

每个人在通往牛逼的道路上总是充满着傻逼 ——陈师傅


在服务器上搭建 Git(需要提前安装Git)

1.首先创建一个git用户和git组

[root@docker ~]# groupadd git

[root@docker ~]# useradd -ggit git

禁止 git 用户 ssh 登录服务器,修改/etc/passwd文件 ,git-shell 是git的受限 shell 工具,你可以方便地将用户 git 的活动限制在与 Git 相关的范围内。该工具随 Git 软件包一同提供。

将git:x:1001:1002::/home/git:/bin/bash修改为

git:x:1001:1002::/home/git:/usr/bin/git-shell

这样,git用户可以正常通过ssh使用git,但无法登录shell,因为我们为git用户指定的git-shell每次一登录就自动退出。

2.创建Git版本仓库

[root@docker ~]# cd/home/git/

[root@docker git]# mkdirstudy.git

[root@docker git]# git init--bare study.git

这一步是将study.git初始化成git裸仓库,之所以叫裸仓库是因为这个仓库只保存git历史提交的版本信息,而不允许用户在上面进行各种git操作,裸仓库没有工作区,服务器上的Git仓库纯粹是为了共享,所以不让用户直接登录到服务器上去改工作区。

[root@docker git]# chown -Rgit:git study.git

把仓库所属用户改为git

3.克隆远程仓库

git clone git@173.168.16.222:/home/git/study.git

如果SSH用的不是默认的22端口,则需要使用以下的命令

git clone ssh://git@173.168.16.222:500/home/git/study.git

注意:这里我在克隆时出现了一点错误,后面的路径写错了,git用户没有权限访问远程仓库都会报错,出现下面的报错信息建议检查以上两点是否有错误

4.创建并配置密钥登陆

创建密钥是为了在进行git clone操作的时候免密登入,

首先编辑ssh的配置文件/etc/ssh/sshd_config添加如下三行内容,修改完成之后重启ssh服务:

RSAAuthentication yes

PubkeyAuthentication yes

AuthorizedKeysFile.ssh/authorized_keys

管理 Git 服务的用户是 git,所以实际存放公钥的路径是/home/git/.ssh/authorized_keys

在git服务器上创建存放公钥的目录

[root@docker git]# mkdir.ssh

[root@docker git]# chmod 700.ssh

[root@docker git]# touch.ssh/authorized_keys

[root@docker git]#chmod 600.ssh/authorized_keys

最后在客户端生成密钥对并将公钥传到服务端的/home/git/.ssh/authorized_keys文件里,使用ssh-keygen生成密钥对,可以使用scp命令将生成的公钥传到服务端

这样Git服务器就搭建完成了

在centos7上搭建GitLab

1.安装所需依赖环境

[root@localhost ~]# yum -yinstall policycoreutils openssh-server openssh-clients postfix

2.启动postfix并让他开机自启

[root@localhost~]#systemctl enable postfix && systemctl start postfix

3.下载并安装gitlab

[root@localhost ~]# wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-8.9.5-ce.0.el7.x86_64.rpm

[root@localhost ~]# rpm -igitlab-ce-8.9.5-ce.0.el7.x86_64.rpm

4.修改配置文件,定义服务器ip

Gitlab的配置文件位于/etc/gitlab/gitlab.rb,因为gitlab是由Ruby语言编写的,所以配置文件后缀是rb,将配置文件里的external_url项修改为自己的ip,比如:external_url 'http://192.168.188.222’

5.重置gitlab

[root@localhost ~]# gitlab-ctlreconfigure

运行此命令其实就是运行了一个自动化配置的脚本,它会自动安装gitlab需要的组件

[root@localhost ~]#gitlab-ctl restart

重启之后可以看到相关的组件已经安装完成并成功运行

6.进入gitlab

输入ip地址即可进入gitlab页面,他会提示你去设置一个用于登录的密码

这样Gitlab的搭建就完成了

Gitlab的使用

单击屏幕右上角的小扳手可以进入管理区域,单击‘NewGroup’可以创建一个组,公司里的一个项目可能会有好几个开发团队来进行开发,可以为每一个团队创建一个项目组

在‘Group path’栏里可以输入组的路径,在‘Visibility Level’栏里可以设置安全级别,第一级private表示只有授权过的人才能访问项目,第二级internal表示只有能登陆gitlab的人才能够访问项目,第三级public表示所有能访问到gitlab上的人才能访问项目,点击左下角‘Create group’即可创建组

单击‘Add users to group’可以将用户添加进组里

再次单击右上角的小扳手就又回到了管理区域,单击‘NewUser’可以添加用户,在‘Account’处可以设置用户信息,在‘Access’处可以设置用户的权限,比如‘Project limit’可以设置该用户允许创建私人库的最大数目,‘Can create group’表示该用户是否可以创建组,‘Admin’表示是否将其设置为管理员,单击左下角‘Create user’即可创建用户

我在这里创建了两个用户,一个叫dev,另一个叫ops,现在我要把这两个用户都加到刚才新建的组里,单击‘Groups’下的数字1就可以进入新建的组里,在右边表单的第一列可以选择要添加的用户,第二列选择用户的权限,单击‘Add users to group’即可添加用户到组,下面完整列出了Guest,Reporter,Developer,Master,Owner对应的权限。

Guest

Reporter

Developer

Master

Owner

Create new issues

*

*

*

*

*

Leave comments

*

*

*

*

*

Pull the project code

*

*

*

*

Download a project

*

*

*

*

Create code snippets

*

*

*

*

Create new merge requests

*

*

*

Push changes to nonprotected branches

*

*

*

Remove nonprotected branches

*

*

*

Add tags

*

*

*

Write a wiki

*

*

*

Manage the issue tracker

*

*

*

Add new team members

*

*

Push changes to protected branches

*

*

Manage the branch protection

*

*

Manage Git tags

*

*

Edit the project

*

*

Add deploy keys to the project

*

*

Configure the project hooks

*

*

接下来开始创建一个新项目,再次点击小扳手图标进入到管理区域,单击‘New Project’创建一个新项目,单击‘Project owner’可以选择一个项目的属主,在‘Project name’一栏设置项目名称,‘Visibility Level’会自动继承属主的权限,单击左下角的‘Create project’可以创建新项目

可以看到新项目已经创建成功了

对gitlab进行权限的配置,单击左侧菜单栏打开侧边栏,找到‘Profile Settings’单击‘SSH Keys’为开发者添加ssh-key,添加ssh-key可以使开发者下的所有项目都赋予可以让开发者上传的权限,如何生成密钥对我在搭建Git服务器那一部分中提到过,进入/root/.ssh/目录下查看公钥的内容,并将内容复制到gitlab上,单击‘Add key’即可成功添加ssh-key

添加完ssh-key我们进行clone测试

[root@localhost ~]# gitclone git@192.168.188.222:gitlab1/project1.git

打开新建的项目可以看到项目的概览,项目会自动继承所属组里的用户权限,当然也可以单独在项目那里添加用户,在project members处单击‘Manage Access’可以为项目单独添加用户并授权,可以看到这个项目的组里有了两个用户,一个是超级管理员,一个是我在组里添加的用户dev,而在项目用户那里我新添加了一个ops用户

新建一次提交

在所在的项目页面单击右上角的加号按钮,有一个‘Newfile’选项,单击它会创建一个新文件,按照表单输入文件名,文件内容,提交描述信息,单击‘CommitChanges’就可以新建一个提交了,初次提交会创建一个master的主分支,可以看到我这里提交了一个README的文件

在客户端使用git pull测试,可以看到目录下面多了一个README文件

Gitlab备份

首先编辑配置文件/etc/gitlab/gitlab.rb,找到配置文件里的备份目录,存在于201行,这行默认是注释的,需要取消注释,备份文件路径默认存在于/var/opt/gitlab/backups目录,当然也可以在配置文件中自己定义备份文件的路径,除此之外还要设置备份文件存在时间,默认是7天,也就是604800秒,关于备份文件存在时间的配置在配置文件的204行,也是需要取消注释的,修改完之后保存退出

运行gitlab-ctl reconfigure重置gitlab的配置,不然修改的配置不会生效,重置完之后重启

运行下面的命令即可将gitlab进行备份

[root@localhost gitlab]#/usr/bin/gitlab-rake gitlab:backup:create,如果想让gitlab定时备份,可以将命令放到cron定时任务里去

我们可以进入备份目录里查看备份的结果

Gitlab恢复

在恢复之前需要停止数据写入,运行下面的两个命令

[root@localhostbackups]# gitlab-ctl stop unicorn

[root@localhost backups]# gitlab-ctl stop sidekiq

恢复命令如下

[root@localhost backups]#gitlab-rake gitlab:backup:restore BACKUP=1533281464 #BACKUP后面加的是备份文件前面的时间戳

恢复完成后重启之前停掉的那两个服务

[root@localhost backups]#gitlab-ctl start unicorn

[root@localhost backups]# gitlab-ctlstart sidekiq

也可以重启所有服务

[root@localhost backups]#gitlab-ctl restart

这里我之前把项目删除了,进行恢复测试了一下,项目成功恢复


如有问题或者建议欢迎各位在下方或者GitHub上评论

参考链接:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/00137583770360579bc4b458f044ce7afed3df579123eca000

如果想要获取全部笔记可以访问https://github.com/chances-for-those-who-have-prepared/study/tree/master/git或者阅读原文下载

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-08-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 运维开发故事 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器镜像服务
容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档