农妇山泉一亩田 发表于 2024-8-15 23:59:48

Git与Gitlab

第1章Git概述

Git是一个免费的、开源的分布式版本控制系统,可以快速高效地处理从小型到大型的各种项目。
代码托管中心,记录每个版本的代码,从项目创建到如今使用的代码,中间所有的修改都有记录。
1. 何为版本控制

版本控制是一种记录文件内容变化,以便将来查阅特定版本修订环境的系统。
版本控制实在最重要的是可以记录文件修改历史记录,从而让用户能够查看历史版本,方便版本切换。
2. 为什么需要版本控制

为了让多人开发代码时,对代码修改有记录。如果修改错了可以实时回滚(人们能够清楚知作别人对代码做了什么)
3. 版本控制工具

(1)会合式版本控制工具(CVS、SVN、VSS)
将所有代码会合存储在一台呆板上,人们通过连接这台呆板来进行操作代码。劣势如果发生单点故障,整个项目就要停滞。
(2)分布式版本控制工具(git)
客户提取的不是最新版本的文件快照,而是将代码仓库完备的存储到本地。这样任何一处协同用的工作发生故障,事后可以通过其他客户端的本地仓库进行恢复。
分布式版本控制解决了会合式版本控制两个缺陷:

[*]服务器断网环境也可以开发(版本控制是在本地进行的(修改完成)才推送到服务器)
[*]每个客户端保存的是完备的项目(包含历史记录)
4. Git简史

https://img-blog.csdnimg.cn/direct/c08ee86255684689b08af5e38bd38c7a.png
5 Git工作机制

本地代码----本地缓存区----本地库----服务器dev分支----merge服务器master
https://img-blog.csdnimg.cn/direct/dca3120949304aa1aadd1b2993c8716e.png
6 Git和代码托管中心

代码托管中心是基于网络服务器的长途代码仓库,一般简单称为长途库。
(1)局域网

gitlab
(2)互联网

Github(外网)
https://github.com/
Gitee码云(国内网站)
https://gitee.com/
第2章 Git安装

安装包下载官网地址:https://git-scm.com/或https://github.com/git-for-windows/git/releases
​查看GNU协议,可以直接点击下一步。
https://img-blog.csdnimg.cn/direct/fb14ee7c5b364920af298da5a35241ba.png
选择Git安装位置,要求是非中文而且没有空格的目录,然后下一步。
https://img-blog.csdnimg.cn/direct/4b03f7fd7994477f987f72d2426f397c.png
Git选项设置,推荐默认设置,然后下一步。
https://img-blog.csdnimg.cn/direct/8d5dd7c688094e4191902e6cbb643d84.png
Git安装目录名,不用修改,直接点击下一步。
https://img-blog.csdnimg.cn/direct/a094fb332b164061aa55e129b1642b73.png
Git的默认编辑器,发起使用默认的Vim编辑器,然后点击下一步。
https://img-blog.csdnimg.cn/direct/34e2183fcba044419c77f8cfc858be99.png
默认分支名设置,选择让Git决定,分支名默认为master,下一步。
https://img-blog.csdnimg.cn/direct/aad00e381bac447ead12e3f5d55b4e16.png
修改Git的环境变量,选第一个,不修改环境变量,只在Git Bash里使用Git。
https://img-blog.csdnimg.cn/direct/70a2b2b4c04a465eb21dcb791fc01150.png
选择后台客户端连接协议,选默认值OpenSSL,然后下一步。
https://img-blog.csdnimg.cn/direct/d566797124d94544837b3a36af39f1ab.png
设置Git文件的行末换行符,Windows使用CRLF,Linux使用LF,选择第一个自动转换,然后继续下一步。
https://img-blog.csdnimg.cn/direct/3884a98a50334fa29945647b31f0a871.png
选择Git终端类型,选择默认的Git Bash终端,然后继续下一步。
https://img-blog.csdnimg.cn/direct/269fa3ab55674c9d9c35f03bb40bd7fb.png
选择Git pull合并的模式,选择默认,然后下一步。
https://img-blog.csdnimg.cn/direct/c26a44b645564962a17c6cafac3f36b3.png
选择Git的根据管理器,选择默认的跨平台的根据管理器,然后下一步。
https://img-blog.csdnimg.cn/direct/6e533013be35456c87cd4d6f2148ce43.png
其他设置,选择默认设置,然后下一步。
https://img-blog.csdnimg.cn/direct/96dc1304a1d24f5aaf9282c2b6ffd07c.png
实验室功能,技术还不成熟,有已知的bug,不要勾选,然后点击右下角的Install按钮,开始安装Git。
https://img-blog.csdnimg.cn/direct/d3e4330cd1384306b02361c31bc00deb.png
点击Finsh按钮,Git安装成功!
https://img-blog.csdnimg.cn/direct/453f1099ba9b40de9e7cc7d645c746d1.png
右键任意位置(win11显示更多选项),在右键菜单里选择Git Bash Here即可打开Git Bash下令行终端。
https://img-blog.csdnimg.cn/direct/228c37b2fadc44dc84c365aa3d501b45.png
在Git Bash终端里输入git --version查看git版本,如图所示,说明Git安装成功。
https://img-blog.csdnimg.cn/direct/8ae696be2c4b406692c0b574924a9a9c.png
第3章 Git常用下令

   git常用下令下令名称作用git config --global user.name 用户名设置用户署名git config --global user.email 邮箱设置用户邮箱git init初始化本地库git status查看本地库状态git add 文件名添加到暂存区git commit -m "日志信息" 文件名提交到本地库git reflog查看历史记录git reset --hard 版本号版本穿梭git branch -a  查看所有分支
git checkout branch_name:切换到已存在的分支
git checkout -b new_branch_name:切换到已经存在的分支之前创建一个新的本地分支
git checkout -b local_branch_name origin/remote_branch_name:切换到长途分支
案例实操

1、全局范围的署名设置

   git config --global user.name lishaoxing
git config --global user.email lishaoxing@163.com
git config --list                # 查看全局设置
cat ~/.gitconfig               # cat linux中查看文本的下令  ~ 家 [你当前用户的家]/ .gitconfig
Notes:
署名的作用是区分不同操作者身份。用户的署名信息在每一个版本的提交信息中能够看到,以此确认本次提交是谁做的。Git初次安装必须设置一下用户署名,否则无法提交代码。【可以在gitconfig文件中更改】
※注意:这里设置用户署名和将来登录GitHub(或其他代码托管中心)的账号没有任何关系。
2、初始化本地库

https://img-blog.csdnimg.cn/direct/f8d825adfc9e454db641227a11b31d72.png
结果出现.git隐藏文件,就说明该文件夹被git管理。
https://img-blog.csdnimg.cn/direct/89f72452157449f08e0bc7de5978121c.png
 3、查看本地库状态

(1)初次查看(工作区没有文件)

https://img-blog.csdnimg.cn/direct/6d5651dba6034ff1a4cf88b902533e72.png
(2)新增文件

https://img-blog.csdnimg.cn/direct/15190d0b64a74b40ae0b7ab9543c7ff2.png
(3)再次查看(检测到未追踪文件)

https://img-blog.csdnimg.cn/direct/658c1c2953eb47f78fb6393db22f5e2b.png
4、添加到暂存区

https://img-blog.csdnimg.cn/direct/52c5c05590f34f1d90a059a735c4be25.png
查看状态(检测到暂存区有新文件)
https://img-blog.csdnimg.cn/direct/23b314fa957240218ef17874fd69f2b7.png
5、提交到本地库

https://img-blog.csdnimg.cn/direct/08fe5ba2c0334e848baf58426e3afdcd.png
查看状态(没有文件需要提交)
https://img-blog.csdnimg.cn/direct/fc5d590f251f441a99e46936e694fbde.png
6、修改文件

https://img-blog.csdnimg.cn/direct/4a0b3d8e25fe4afe9f7de90c3c841094.png
https://img-blog.csdnimg.cn/direct/9876febc39e64bc28222239f50cc1d80.png
https://img-blog.csdnimg.cn/direct/826836c8aca4456dac3775151519225a.png
https://img-blog.csdnimg.cn/direct/223dfadec27c478597017a4d2c065396.png
7、历史版本

https://img-blog.csdnimg.cn/direct/3fe7a4e4d9e84ae7bb12ffb18848e7de.png
8、版本穿梭

https://img-blog.csdnimg.cn/direct/3ab79e0235284f7e8eeab76d69b764cb.png
https://img-blog.csdnimg.cn/direct/5862d5ebccb04f07a141e55bce84e33b.png
https://img-blog.csdnimg.cn/direct/b396c4d7ded94fb68a027fd5b6ee1a59.png
Git切换版本,底层实在是移动的HEAD指针。
第4章 Git客户端便捷操作

使用下令行操作git相对而言是非常不方便的,查看内容也不是很直观,所有官方推荐使用Git的GUI 客户端来完成页面化操作。
GitHub

GitHub下载链接:https://desktop.github.com/
1、登岸上GitHub账号、创建一个新的仓库
https://img-blog.csdnimg.cn/direct/c74c25472a4641a089071306aacc6db7.png
2、创建仓库
https://img-blog.csdnimg.cn/direct/15ca0dff731043baa25e5a69947d8b63.png
3、GitHub客户端登岸git账号
https://img-blog.csdnimg.cn/direct/bf0a5ab51d684c7eaf9309ae1d4a6d24.png
https://img-blog.csdnimg.cn/direct/a9d748202e164c518cdd02471d90e838.png
4、克隆项目到本地(本地文件夹要为空)
https://img-blog.csdnimg.cn/direct/d69869518af4493d9daf2aab8d47315b.png
https://img-blog.csdnimg.cn/direct/6b7da208e9e249feb5b8603af2ef24b7.png
5、修改后的项目提交的github
https://img-blog.csdnimg.cn/direct/ce3826e660354941a5db4d132006a913.png
Gitee

GitHub的网站有时间会连接不上,无法登录。可以使用阿里提供的Git长途仓库网站Gitee来代替。
起首也是登录Gitee官网注册账号并登录
1、创建一个项目
https://img-blog.csdnimg.cn/direct/123fb716b27642aa99544717dda6f9c4.png
2、使用github软件克隆(类似GitHub操作,知识换成URL,URL一定详细到仓库)
https://img-blog.csdnimg.cn/direct/dcd5ef2281984fb59b090c99dc0b9f08.png
2、输入gitee的账号暗码
https://img-blog.csdnimg.cn/direct/0fc129a2d85b47f9ac037635a5e6c9ec.png
3、克隆完成后后续就和上边一样了。
第5章 GitLab的部署与使用

1.为什么使用GitLab-开发运维一体化

使用git,还需要一个长途代码仓库。常见的github、gitee这种长途代码仓库,公司中一般不会使用,由于他们是使用外网的,不够安全。一般企业都会搭建一个仅内网使用的长途代码仓库,最常见就是 GitLab。
2. 部署安装GitLab

安装包文件下载地址:https://pan.baidu.com/s/1fBia_Jt3wLsGO_zeJnnqHw?pwd=6666
2.1 安装部署

1)需要开启ssh:(已开启可跳过)
   sudo systemctl status sshd
sudo systemctl enable sshd
sudo systemctl start sshd
2)防火墙开放http、https服务:(已关闭防火墙可跳过)

sudo systemctl status firewalld
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo systemctl reload firewalld
2.1.2 rpm 包安装

1)上传安装包
下载地址:https://packages.gitlab.cn/#browse/search/
安装包较大,发起下载好手动上传服务器。这里上传到/opt/software
2)编写安装脚本
   cd ~/bin
vim gitlab-install.sh
脚本内容如下:
   sudo yum install -y curl policycoreutils-python openssh-server perl
curl -fsSL https://packages.gitlab.cn/repository/raw/scripts/setup.sh | /bin/bash
sudo rpm -ivh gitlab-jh-16.6.1-jh.0.el7.x86_64.rpm
sudo yum install -y postfix
sudo systemctl enable postfix
sudo systemctl start postfix
 3)修改脚本执行权限并执行

   chmod +x gitlab-install.sh
sh gitlab-install.sh
4)修改external_url

   sudo vim /etc/gitlab/gitlab.rb
在文件中找到external_url,修改为如下内容
   external_url 'http://192.168.10.104'
保存退出
5)修改host

   sudo vim /opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml.example
找到gitlab.host修改为如下内容
https://img-blog.csdnimg.cn/direct/dd6d16fe9dae478a8aab89db06f9069e.png
保存退出
修改文件名称
   sudo mv /opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml.example /opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml
 6)重装需要彻底卸载

1 卸载gitlab
   sudo rpm -e gitlab-jh-16.6.1
2 删除gitlab文件
   sudo rm -rf /etc/gitlab
sudo rm -rf /var/opt/gitlab
sudo rm -rf /opt/gitlab
3 重装如果卡在sudo gitlab-ctl reconfigure设置下令上,可以使用另外一个窗口执行
   sudo systemctl restart gitlab-runsvdir
2.1.3 执行初始化

执行过程大概需要3分钟:
   sudo gitlab-ctl reconfigure
2.1.4 启停下令

   sudo gitlab-ctl start
2)制止下令
   sudo gitlab-ctl stop
2.1.5 修改 root 暗码

1)访问Web页面
直接访问hostname:192.168.10.104
2)查看root暗码
账号root,暗码将随机生成并在 /etc/gitlab/initial_root_password 中保存24 小时:
   sudo cat /etc/gitlab/initial_root_password
修改暗码:
https://img-blog.csdnimg.cn/direct/d65d57f9536a4dd2b24e4986efcbf897.png
2.1.6 设置简体中文

https://img-blog.csdnimg.cn/direct/5ab93179e7234d41aa2083a0144eef8f.png
回到首页,可以看到酿成中文:
https://img-blog.csdnimg.cn/direct/fab9e6a3a7bc4befb520bc8178623124.png
3. 使用GitLab完成团队管理

去到一家公司,应该是已经有了GitLab平台,运维人员拥有root管理员账号。而作为一名普通的开发人员,你的leader和同事都拥有各自的GitLab账号和不同权限。入职后,你只需要申请开通GitLab账号和对应权限,不需要你来操作。
3.1创建用户

为了更符合公司现实,我们假设数据组的leader账号为tutou,你是lishaoxing。
https://img-blog.csdnimg.cn/direct/bc67e071788543258a60ea9a45a5c15b.png
创建一个leader的账号:
https://img-blog.csdnimg.cn/direct/74a8133ca2814be983f1178d072330d1.png
再申请一个lishaoxing账号
https://img-blog.csdnimg.cn/direct/c8588be8f9214e23956576548582be5d.png
用户会收到重置暗码的邮件,也可以由管理员设置:
https://img-blog.csdnimg.cn/direct/2bb4611b657249c88dd742f97160c7b6.png
https://img-blog.csdnimg.cn/direct/30d8ed06beff46cfab31b75e3715633d.png
3.2 创建群组

在gitlab里,可以创建出组、组下的子组。在小公司里可以瞥见gitlab里边会创建出后端,大数据等等一系列组。只管不要使用中文创建组名, 可以在组信息中的备注编写中文描述以及中文组名, 组内人员名称也只管用全拼定名。
对于人员权限以及角色的控制也比较简单,有如下五种:
Owner:最高权限,谁去创建组,这个组就被谁拥有,它可以开除管理员,但管理员无法操作owner的角色。
Maintainer:(管理员-只是具备sudo权限的用户)管理员一般是给小组的组长,或者是给产品线的总监设定。
Developer:是干活的人,就是写代码的程序员,可以进行代码的上传以及代码的下载,不能下载其他的组内的代码,只能下载它们组的代码。
Repoter:比如如今有需求,其他组的大牛到我们组过来引导工作,要审视我们的代码,人家就提出需要一个权限,我不能给它developer由于它会改你代码,其他组的人不能改我们组的代码,以是就给一个repoter权限,他只能看,只读权限。
guest:不用看,匿名,直接去掉。一般出如今从ldap中把离职人员的信息删掉,再去gitlab查这个人的时间,它就是一个guest用户(匿名)需要再到gitlab把它删掉(不删也没事)。
下面,我们假设研发部群组是rdc,下属后端组、前端组、大数据组等子群组:
https://img-blog.csdnimg.cn/direct/e2dd3008084e4b379bb59fc2f40a927f.png
1)创建研发中心群组rdc
https://img-blog.csdnimg.cn/direct/5414d5ccc35b4ff6bc8129382e5233f5.png
2)创建大数据组

在研发中心组下,再创建一个大数据组(固然,其他还会有后端组、前端组等):
https://img-blog.csdnimg.cn/direct/948279276f9d42dab064a0946b1bf992.png
https://img-blog.csdnimg.cn/direct/684c6d1a6d8747788d458d1b81e339fd.png
固然,根据公司环境还可以进一步在数据组下面细分子组(比如:离线、实时、湖等),这里我们就不再细分。
将数据组的leader设为bigdata的负责人:
https://img-blog.csdnimg.cn/direct/5eda9a7b942249b2b358e5de541b3ef9.png
将lishaoxing添加为普通的开发人员:
https://img-blog.csdnimg.cn/direct/9225d4a7b0614c65896cfe08e46f47ec.png
如今我们就有一个顶级群组rdc,其下有一个子群组bigdata,组内有管理员tutou,开发人员lishaoxing。
4.使用IDEA兼容GitLab

1)安装 GitLab 插件

https://img-blog.csdnimg.cn/direct/933af3a928db4987be70a768f0ed0fa9.png
2)设置 SSH 免密登录

ssh-keygen -t rsa -C lishaoxing@123.com
https://img-blog.csdnimg.cn/direct/9192fe178c2248dc870cc252d6e63c6d.png
到用户目录下.ssh查看id_rsa.pub文件
https://img-blog.csdnimg.cn/direct/68af481d85db4764a28da9ed88acaaa6.png
添加到GitLab中:
https://img-blog.csdnimg.cn/direct/009432e9468647a8bd7d91d990b97938.png
3)获取 GitLab 个人令牌

https://img-blog.csdnimg.cn/direct/ba8e4d3892754e18b7b459ca731029bc.png
创建后,可以查看和复制生成的token:
https://img-blog.csdnimg.cn/direct/08251cc4163e4db2b53cc9c34483ba5e.png
4)添加 GitLab 服务

https://img-blog.csdnimg.cn/direct/52209166e0d147ac9a6979b9bad3675f.png
https://img-blog.csdnimg.cn/direct/af744f2f22144ea49af8120bba61017d.png
5)修改默认分支的保护策略
https://img-blog.csdnimg.cn/direct/27b6a39f1de44e97945313ebc19bb3c0.png
第6章 企业项目构建与开发分支

1. GitFlow工作流先容

在项目开发过程中使用 Git 的方式常见的有:
1.1 会合式工作流

所有修改都提交到 Master 这个分支。比较适合极小团队或单人维护的项目,不发起使用这种方式。
https://img-blog.csdnimg.cn/direct/443b86287f3a4d63aca68f593d268f4c.png
1.2 功能开发工作流

功能开发应该在一个专门的分支,而不是在 master 分支上。适用于小团队开发。
https://img-blog.csdnimg.cn/direct/6400429dcb5a4ccd909329719106a313.png
1.3 GitFlow工作流

公司中最常用于管理大型项目。为功能开发、发布预备和维护设立了独立的分支,让发布迭代过程更流通。
https://img-blog.csdnimg.cn/direct/bdd05b02fe2b422da661a17d7e350c30.png
1.4 Forking工作流

在 GitFlow 基础上,充分利用了 Git 的 Fork 和 pull request 的功能以达到代码考核的目的。一般用于跨团队协作、网上开源项目。
https://img-blog.csdnimg.cn/direct/8eb729041e3944e1aa1e9e89e77d47de.png
2. 各分支功能先容

2.1 主干分支 master

重要负责管理正在运行的生产环境代码,永久保持与正在运行的生产环境完全一致。为了保持稳定性一般不会直接在这个分支上修改代码,都是通过其他分支合并过来的。
2.2 开发分支 develop

重要负责管理正在开发过程中的代码。一般环境下应该是最新的代码。
2.3 功能分支 feature

为了不影响较短周期的开发工作,一般把中长期开发模块,会从开发分支中独立出来。 开发完成后会合并到开发分支。
2.4 准生产分支(预发布分支) release

较大的版本上线前,会从开发分支中分出准生产分支,进行最后阶段的集成测试。该版本上线后,会合并到主干分支。生产环境运行一段阶段较稳定后可以视环境删除。
2.5 bug 补缀分支 hotfix

重要负责管理生产环境下出现的紧急修复的代码。 从主干分支分出,修复完毕并测试上线后,并回主干分支和开发分支。并回后,视环境可以删除该分支。
3. 创建项目与分支管理

3.1 idea与长途仓库连接

创建公钥和私钥,将公钥复制到长途gitlab服务器。
ssh-keygen -t rsa -C gitlab账号
https://img-blog.csdnimg.cn/direct/f47265915fc64074ab1ae40188a61005.png
用文本编辑器将该文件打开,详细路径如下:
https://img-blog.csdnimg.cn/direct/ca8fed7d136d41eb9a16b734d9fd7b9a.png
将内容复制到
https://img-blog.csdnimg.cn/direct/d8d4768a8e3f4cd6960597b85890abbe.png
https://img-blog.csdnimg.cn/direct/d319de1905004cf1840fc8c1fa113bb5.png
创建访问令牌,并将其复制到本地idea。
https://img-blog.csdnimg.cn/direct/8c10df97e15e427ba4eb8c49382d0cf0.png
https://img-blog.csdnimg.cn/direct/1fabbd602b6c4fc2afeee415f1dbc3f6.png
https://img-blog.csdnimg.cn/direct/418d7fd67384489a924efae562ac648e.png
在本地idea上输入服务器地址(图片错误了)http://192.168.10.104就行了
https://img-blog.csdnimg.cn/direct/ab77cdb42a83497382a56a5c591f3b83.png
这是将本地项目上传到gitlab(之前没有该项目)
https://img-blog.csdnimg.cn/direct/cf87b1f85aff473783b6427de2d80b03.png
这是从gitlab服务器上下载项目。
https://img-blog.csdnimg.cn/direct/aee3fe2200ae420aa5a0d3b1f20acdd1.png
https://img-blog.csdnimg.cn/direct/b7e6612d205744729d4b6cc6a961e153.png
修改文件之后就可以提交了。
https://img-blog.csdnimg.cn/direct/7962d27e90fc4cd6acafdb068ae2a49e.png


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: Git与Gitlab