Git学习笔记(git应用)

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


在服务器上搭建 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或者阅读原文下载

原文发布于微信公众号 - 没有故事的陈师傅(mygsdcsf)

原文发表时间:2018-08-04

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券