Git学习笔记(git应用)

简介: 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

640.png


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


640.png


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


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


640.png


6.进入gitlab


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


640.jpg


这样Gitlab的搭建就完成了


640.jpg


Gitlab的使用


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


640.jpg



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


640.jpg


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


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


640.png


我在这里创建了两个用户,一个叫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




*

*


640.png


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


640.jpg


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


640.jpg



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


640.jpg


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


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


640.jpg


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


640.jpg


新建一次提交


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


640.jpg


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


640.png


Gitlab备份


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


640.png


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


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


[root@localhost gitlab]#/usr/bin/gitlab-rake gitlab:backup:create,如果想

让gitlab定时备份,可以将命令放到cron定时任务里去


640.png


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


640.png


Gitlab恢复


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


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

640.png


恢复命令如下

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

640.jpg


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


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


也可以重启所有服务


[root@localhost backups]#gitlab-ctl restart


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

相关文章
|
8月前
|
API 开发工具 git
git常用的API以及每个的应用场景
【4月更文挑战第5天】Git是流行的分布式版本控制系统,用于代码管理,提供丰富的API。本文概述了Git常用API,如`git init`(初始化仓库)、`git add`(添加到暂存区)、`git commit`(提交)、`git remote add origin`(添加远程仓库)、`git pull`和`push`(同步远程仓库)、`git branch`(分支管理)以及`git checkout`(切换分支或恢复文件)。了解和熟练使用这些API能提升开发效率和代码质量,更多Git功能可参考官方文档。
428 0
|
8月前
|
测试技术 持续交付 开发工具
《Git 简易速速上手小册》第6章:Git 在持续集成/持续部署(CI/CD)中的应用(2024 最新版)
《Git 简易速速上手小册》第6章:Git 在持续集成/持续部署(CI/CD)中的应用(2024 最新版)
133 2
|
测试技术 Linux 开发工具
Git之分支与版本->课程目标及知识点的应用场景,分支的场景应用,标签的场景应用
Git之分支与版本->课程目标及知识点的应用场景,分支的场景应用,标签的场景应用
80 0
|
2月前
|
Linux 网络安全 开发工具
Git学习笔记(一):基础与应用
本文档详细介绍了如何将本地项目关联到Gitee上的空仓库并上传代码,以及如何验证本机与Git服务器的SSH连接。同时,还概述了Git的基本概念、安装步骤、初始配置、常见命令及如何配置多个SSH-Key,适用于初学者快速上手Git操作。
119 51
Git学习笔记(一):基础与应用
|
5月前
|
安全 Linux 开发工具
Git学习笔记
这篇文章是一份Git学习笔记,涵盖了Git的基本命令、工作流程、项目搭建、文件状态管理,以及如何使用码云和IDEA进行版本控制操作。
Git学习笔记
|
5月前
|
存储 Linux 开发工具
【Azure App Service】本地Git部署Python Flask应用上云(Azure App Service For Linux)关键错误
【Azure App Service】本地Git部署Python Flask应用上云(Azure App Service For Linux)关键错误
|
8月前
|
Shell 网络安全 开发工具
Git学习笔记
Git学习笔记
144 1
Git学习笔记
|
5月前
|
jenkins 测试技术 开发工具
协同开发的艺术:Git 在团队项目中的高效应用
【8月更文第16天】在现代软件开发中,团队成员之间的高效协作是至关重要的。Git 作为一种分布式版本控制系统,为开发者提供了强大的工具来管理代码的变化和协作。本文将介绍如何利用 Git 来优化团队的工作流程,并提供实际操作的代码示例。
152 1
|
6月前
|
存储 安全 开发工具
Git学习笔记 三个区域、文件状态、分支、常用命令
理解并掌握这些概念和命令,对于有效地使用Git来管理项目源代码是至关重要的。Git的强大功能支持了复杂的开发工作流程,而良好的Git实践能够极大地提高团队的协作效率。随着实践的增多,对于Git更深层次的功能和最佳实践的理解也会随之增长,进一步加强你作为一个软件开发者的能力。
82 0
|
7月前
|
前端开发 持续交付 开发工具
详细介绍Git的基本原理、在前端开发中的应用以及如何使用Git来优化团队协作
【6月更文挑战第14天】Git是前端开发中的必备工具,它通过分布式版本控制管理代码历史,支持分支、合并和冲突解决,促进团队协作。在前端开发中,Git用于代码追踪、版本控制、代码审查和持续集成部署,优化团队协作。制定分支策略、编写清晰提交信息、定期合并清理分支以及使用Git钩子和自动化工具能进一步提升效率。理解并善用Git,能有效提升前端项目的质量和开发效率。
90 3