【持续集成_01课_Git版本管理及基本应用】

一、什么是持续集成

测试代码、开发代码、测试报告、发送邮件...组合到一起来 --- 流水线。 (有一个规范的流程)

持续集成(Continuous Integration,简称CI) 是一种软件开发实践,旨在将代码集成到共享仓库中,并频繁地自动执行构建和测试。这种方法允许团队更早地发现并定位问题,从而确保软件质量。

类似于行云流水线

持续集成通常涉及以下关键步骤:

代码提交:开发人员将他们的代码更改提交到共享的代码仓库(如Git)。
自动构建:每当有新的代码提交时,自动化工具(如Jenkins、Travis CI等)会触发构建过程,从代码仓库中拉取最新的代码,并执行编译、链接等操作。
自动化测试:构建成功后,自动化测试会执行,包括单元测试、集成测试、功能测试等,以确保代码更改没有引入新的问题。
反馈:测试结果会及时反馈给开发人员,以便他们了解更改是否通过了测试,或者需要修复哪些问题。
持续集成的好处包括:

更早发现问题:由于每次代码更改都会触发构建和测试,所以问题可以在早期阶段就被发现,从而减少了修复成本。
提高代码质量:频繁的测试和反馈可以确保代码质量始终保持在较高水平。
促进团队协作:通过共享的代码仓库和自动化的构建/测试过程,团队成员可以更好地协作,确保他们的更改不会破坏其他人的工作。
加快开发速度:由于问题可以更早地被发现和修复,所以开发速度通常会更快。
总之,持续集成是一种重要的软件开发实践,它可以帮助团队提高代码质量、促进协作,并加快开发速度。

二、版本控制概念与环境搭建

1、版本管理

1)版本管理的区别

本地:线下进行版本的管理,问题: 不能同步、资料的丢失

云:线上进行版本管理 -- 线上多人维护操作、避免了资料的丢失的可能性

对代码的线上管理,则是把代码上传到公共的平台 (托管平台)--在线代码仓库

2、代码版本管理工具和平台

Git结合Gittee进行基本设置【重要】

Git是一款分布式源代码管理工具(版本控制工具) ,一个协同(大家一起做一件事情)的工具。

1、工具:

  1. Git -- 一般通过命令方式去进行执行 (必须掌握常见的命令)
  2. 在线仓库:比如说:Gitee、GitHub、GitLab、Gogs等等(四个平台都是基于Git的,操作几基本一致,只是中间两个是国外的,访问可能有问题,所以只学两个红色的)

2、平台

网址:Gitee - 基于 Git 的代码托管和研发协作平台

总结: 通过Git 命令上传代码到在线仓库; 通过Git 命令拉取代码到本地仓库

代码仓库可以理解成是一个文件夹

3、安装

安装包下载官网:https://git-scm.com/download/win

windows: 双击.exe安装包,一路next傻瓜式安装,即可。最后确认一下安装成功即可

mac: 需要用命令去按安装。讲解在01课44分钟左右

安装包下载官网:https://git-scm.com/download/win

运行这个命令去安装

4、配置当前用户信息

执行这2个命令即可:

git config --global user.name "用户名"
git config --global user.email "邮箱"

配置完成后,查看配置

git config --list

如图

上面的配置实际是在这个文件

5、仓库的创建

仓库是否有内容分为:空仓库 和 非空仓库 区分 ;第一步操作会有一些小区别。

6、拉取代码

1、非空仓库

1.1)切到保存的路径
1.1.1)方式一:可以在cmd通过命令切换到这个路径

先cd 路径,回车。 再直接D:

1.1.2)方式二:可以直接在所在路径,输入cmd

回车后会直接在cmd打开这个路径位置

1.1.3)方式三:git.bash(安装Git自带的)
1.2)拉取代码

命令:

git clone 地址(https/ssh)   --- 自动建立远程连接
1.2.1)https方式拉取
命令:

git clone https://gitee.com/****8*.git

https需要生成令牌,每次拉取要输入令牌

1.2.1.1)git.bash下载成功
1.2.1.2)或者在cmd下载成功
拉取成功

上面两种方式任一即可,再查看本地路径,已经拉取下来了

1.2.2)ssh方式拉取
命令:

git clone git@gitee.com:****.git
1.2.2.1)生成公钥:
  1. 在cmd 中输入: ssh-keygen -t ed25519 -C "邮箱地址" ,邮箱随意最好是gitee邮箱地址。

    ssh-keygen -t ed25519 -C "邮箱地址"

  2. 三次回车:直接回车即可。不要输密码,否则后面每次拉取都需要输密码

自己:生成的公钥,其实不是实际的公钥。公钥还是得在存储的那个文件里才能获取到

  1. 配置:需要到Gitee配置SSH公钥
  1. 正常拉取即可

7、提交代码

1、空仓库

自己从0 到1 的仓库怎么去进行代码的维护。(提交代码)

(一定要让空仓库变成非空仓库)

1.1)方式一:点击初始化的按钮进行操作
1.2)方式二:完全执行命令的方式

Git整体流转的原理

Git常用命令使用【重要】

1、mkdir testapi01   # 创建文件夹
2、cd testapi01    # 进入到文件夹
3、git init     # 初始化命令

执行完会提示: 
Initialized empty Git repository in F:/ProjectHcEdu/cicdclass/testapi01/.git/  
提示是告知,自动生成了一个.git的隐藏文件

4、touch README.md  # 开始新建文件/或移动自己的本地代码文件到这个文件夹
(这个命令,cmd是执行不了的)

# 提交代码的命令:

1. 提交文件:
确定你要提交文件,单个文件则写对应的文件名,多个文件那么git add . 
git add README.md  (提交单个文件)
git add .   (提交多个文件,就.就完事了,没其他)

2. 提交文件的说明:
将暂存区中的更改说明 提交到版本历史记录, 这样可以通过git log 查看提交信息
git commit -m "first commit"

3. 建立远程连接 (初始化才需要这么做,为什么? 后面这个就是拉取代码库的地址 https/ssh)
git remote add origin git@gitee.com:yulisasyc/testapi01.git

4. 确认进行提交操作
git push -u origin "master"

非空仓库,直接从线上拉取下来的(自己已经建立连接),在这个位置如果你需要提交代码的话,不需要建立远程连接。

空仓库,里面没有远程连接

执行完建立连接的命令,就立马在配置文件建立了连接

最终提交成功后

五. Git解决版本冲突问题【重要】

版本冲突

【绕的很】版本冲突怎么办:两个人同时做了改动。

场景1:修改的是非一个文件

场景2:修改的是同一个文件

场景1:修改的非同一个文件

方法一: git pull 拉取代码 ,从远程获取代码并合并本地的版本。

知道有人有修改时,自己要先拉取一下最新代码,合到本地版本。然后再提交自己的代码,正常提交即可。

方法二:

我不知道对方有更新。我就一次性卡拉提交,这时候就会提示冲突错误信息。

(原来拉取的不能提交了)

解决方案:

  1. 新建一个仓库文件夹,把最新的代码拉取下来

  2. 然后把你修改的文件放进去 (当修改的文件不是同一个时,直接把自己的文件放进去就可以)

  3. 重新提交即可

PS:另外一种解决方式,不推荐()

git reset --hard  #  用于重置当前分支的HEAD指针和索引到指定的提交,并删除所有未提交的修改。
git pull # 拉取线上的最新的代码
问题:此方法本地修改的代码会被丢弃,不可找回。

场景2:修改的是同一个文件

版本管理工具也不知道你要保留哪些内容,所以要对应的开发人员去手动进行取舍。

提交时,报错

步骤:

git branch 查看本地的分支 --默认当前分支。

1、创建分支:新建的分支和之前的分支都会默认指向当前分支(master 和 test 都是 自己本地分支)

git branch 新建分支名

  1. 把master分支变成:线上的分支 --- 先进行回滚,然后再拉取。

通过git log 查看 commit-id

git reset --hard commit-id --回滚,之前OK的 分支

目前地步:master已经变成了之前ok 和 test 是 自己之前本地分支

怎么看分支的内容? 可以通过切分支看。

切分支:
gti checkout 分支名

把master分支变成线上的代码:

git pull 代码

目前地步:master已经变成了线上的分支 和 test 是 自己之前本地分支

目标:1个分支指定自己的分支,1个是线上的分支 ,最后2个合并。

  1. 合并:在master分支执行: git merge test-- (分支名),进行取舍

  2. 正常提交即可。

相关推荐
comli_cn7 分钟前
使用清华源安装python包
开发语言·python
赵谨言18 分钟前
基于python 微信小程序的医院就诊小程序
经验分享·python·毕业设计
1.01^100032 分钟前
[1111].集成开发工具Pycharm安装与使用
python·pycharm
HEX9CF33 分钟前
【Django】测试带有 CSRF 验证的 POST 表单 API 报错:Forbidden (CSRF cookie not set.)
python·django·csrf
凡人的AI工具箱1 小时前
每天40分玩转Django:实操多语言博客
人工智能·后端·python·django·sqlite
Py办公羊大侠1 小时前
Excel批量设置行高,Excel表格设置自动换行后打印显示不全,Excel表格设置最合适的行高后打印显示不全,完美解决方案!!!
python·excel·打印·openpyxl·自动换行·显示不全
PieroPc1 小时前
Python tkinter写的《电脑装配单》和 Html版 可打印 可导出 excel 文件
python·html·电脑
Cachel wood2 小时前
Django REST framework (DRF)中的api_view和APIView权限控制
javascript·vue.js·后端·python·ui·django·前端框架
暮色尽染2 小时前
Python 正则表达式
开发语言·python
幽络源小助理2 小时前
Python使用requests_html库爬取掌阅书籍(附完整源码及使用说明)
python·html·python爬虫·爬虫教程·requests_html·爬取书籍·掌阅