Git学习笔记1

news2025/2/22 11:25:49

任务要求:

1、使用git提交代码到仓库;

2、实现自动代码发布系统;

1、了解DevOps的发展历程和思想;

2、学会git版本控制;

3、会使用github公有仓库和gitlab私有仓库;

4、了解CI/CD;

5、使用jenkins实现自动发布;

DevOps是一种实现Dev(开发)与Ops(运维)工作流有效联合的思想。

最终目标就是为了体现开发与运维有效结合方法,越是高级应用,越接近我们DevOps思想所阐述的做事方法。

最初:程序开发的所有环节,从规则说明书、到软件开发、到测试、到部署、再到技术支持。

软件工程师、网络管理员、数据库开发者、网页开发者、系统架构师、测试工程师等。

敏捷意味着开放和拥抱改变,但是改变太多的话,人们就很难专注到最终目标和交付上来。

此时精益软件开发就开始出现。

精益求精:目的就是为了进一步减少项目风险,实现快速交付。

1)杜绝浪费;

2)内建质量;

3)增强学习能力;

4)延迟决策;

5)快速发布;

越早获得客户反馈,越早安排开发事项;越短开发周期,越快从市场获得实时信息,为应变市场变化获得时间;

6)授权和尊重;

让团队成员知道工作全貌;

7)系统思考;

鼓励人与人之间的沟通,促进探讨如何生产处更好的产品和服务。

从精神上关注做正确的事情,同时能够让整个开发流程拥有足够的弹性。

DevOps:

软件开发团队一般会包括项目经理,系统架构师,前端开发者,后端开发者,测试工程师,网络工程师,运维工程师等。软件先由后端开发者、前端开发者进行开发,当软件开发完成,需要部署的时候,软件会通过自动化手段到达架构师,运维工程师等这些运维人员手上,由运维人员进行部署,发布即可。

如何让软件在开发、测试、运维及最终发布之间进行有效的流动,这就是DevOps所要关注的重点。

DevOps是一种文化、一种理念、是一种把开发、测试、运维及最终发布工作流进行联合的思想。

整个团队应该关注从需求被定义到开发,再到运维这个过程,直到价值被以服务的形式交付给最终用户。将这种方式带到实践中的产出便是永远不要将已知的缺陷传递到下游工作永远不要为了局部优化影响了整体价值流交付总是为了增加价值流动努力,永远追求对架构的深刻理解。

实践方法:

1)所有环境和代码使用同一个仓库,将软件包纳入版本管理;

2)团队共同决定发布流程;

3)保持DEV/TEST/PRODCTION环境的一致性;

4)自动化回归测试;

5)小步提交、每日部署;而不是一次部署大量变更;

6)更快、更频繁发布。

回归测试是指修改了旧代码后,重新进行测试以确认修改没有引入新的错误或导致其他代码产生错误。

放大反馈环:

几乎所有流程的改进都是为了从时间上缩短和从覆盖面上放大反馈循环,从而可以不断地进行必要的改正。

实践方法:

代码审查及配置变更检查

有纪律的自动化测试,使许多同时的小型敏捷团队能够有效地工作;

尽早地设置监控预警;

修复bug为团队最高优先级;

团队成员之间高度互相信任;

团队之间保持沟通和良好合作;

持续实验和学习的方法:

从失败中学习,通过反复实践来达到精通;

需要实验和冒着失败的风险,通过反复地试错来掌握使我们远离危险的技能。

实践方法;

故障模拟,把人工错误引入到系统中,加强系统的健壮性;

生产中部署一台服务器用于故障训练,以便练习服务器经常处于失效状态下的故障恢复能力。

团队有没有按照DevOps的思想去工作,可以按以下清单进行对照即可

  • 开发团队和运维团队之间没有障碍。两者皆是DevOps统一流程的一部分。
  • 从一个团队流到另一个团队的工作都能够得到高质量的验证
  • 工作没有堆积,所有的瓶颈都已经被处理好。
  • 开发团队没有占用运维团队的时间,因为部署和维护都是处于同一个时间段。
  • 开发团队不会在周五下午5点后把代码交付进行部署,剩下运维团队周末加班加点部署
  • 开发环境标准化,运维人员可以很容易將之扩展并进行部署
  • 开发团队可以找到合适的方式交付新版本,且运维团队可以轻易的进行部署。
  • 每个团队之间的通信线路都很明确
  • 所有的团队成员都有时间去为改善系统进行试验和实践
  • 常规性的引入(或者模拟)缺陷到系统中来并得到处理。每次学习到的经验都应该文档化下来并分享给相关人员。事故处理成为日常工作的一部分,且处理方式是已知的

 

版本控制概念:

什么是版本?

答:centos6.9 centos7是操作系统版本;nginx-1.10 nginx1-14这些属于软件的版本;一个配置文件或一个代码文件多次被修改,这些都有对应的版本。

什么是版本控制:

版本控制软件提供完备的版本管理功能用于存储、跟踪目录文件的修改历史,是软件开发者的必备工具,是软件公司的基础设施。版本控制软件的最高目标,是支持软件公司的配置管理活动追踪多个版本的开发和维护活动,及时发布软件。 

通过git记录每一次修改的信息。

常见的版本控制系统及比较:

cvs、svn、git都是版本控制系统。

腾讯tapd、百度icafe、阿里云效也是一站式的版本控制。

cvs和svn都是集中式的版本控制系统;

git是分布式的版本控制系统;

分布式版本控制系统可以不连网工作,因为版本库就在你自己的电脑上。

分布式版本控制系统可以没有中央服务器,每个人的电脑都是一个完整的版本库,可靠性高。

分布式版本控制系统也可以有一台充当“中央服务器”的电脑,但是这个服务器的作用是用来方便大家交换自己的修改,没有它大家都一样干活,只是交换修改不方便而已。

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1024001.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

svn(乌龟svn)和SVN-VS2022插件(visualsvn) 下载

下载地址: https://www.visualsvn.com/visualsvn/download/

Go的error接口

从本书的开始,我们就已经创建和使用过神秘的预定义error类型,而且没有解释它究竟是什么。实际上它就是interface类型,这个类型有一个返回错误信息的单一方法: type error interface { Error() string } 创建一个error最简单的方…

cutree 算法

传播 ​ 由于块与块之间具有参考关系,提升被参考块的质量,可以改善后续参考块的质量 ​ Pn1帧中CU0,1完全参考Pn的CU1,1。且Pn1帧中CU0,1块帧内预测和帧间预测的代价分别为 c x , y n 1 ( 0 , 0 ) c_{x,y}^{n1}(0,0) cx,yn1​(0,0)和 c x , y n 1 ( d…

vue获取本地缓存并转为json格式

场景 要求获取当前登录用户id,传入后台去筛选属于该用户的数据; 当前登录用户信息一般会在本地存储中,有些则是在session中,此处只对本地存储做讨论; 本地缓存的用法 1 存储数据 localStorage.setltem(userId,"…

【版本控制】Github和Gitlab同时使用ssh

前言 最近在使用 WSL 时会同时用到 GitHub和 Gitlab ,因此与传统配置 ssh 方式有些不一样的地方,这里特别记录一下 本地生成公私密钥 首先确保把之前的 ssh 信息清除,也可以将整个 ~/.ssh 目录删除 rm -rf ~/.ssh/*我们分别生成 Github 和…

Bigemap如何添加谷歌历史影像

工具 Bigemap gis office地图软件 BIGEMAP GIS Office-全能版 Bigemap APP_卫星地图APP_高清卫星地图APP 很多粉丝私信都在问怎么才可以看到谷歌的历史影像,其实这个图源目前是没有对大陆网络ip进行开放,所以如果需要查看,也是需要看你当前…

阿里云产品试用系列-Serverless 应用引擎 SAE

Serverless 应用引擎 SAE(Serverless App Engine)是一个全托管、免运维、高弹性的通用 PaaS平台。SAE 支持 Spring Boot、Spring Cloud、Dubbo、HSF、Web 应用和 XXL-JOB、ElasticJob任务的全托管,零改造迁移、无门槛容器化、并提供了开源侧诸…

【JAVA-Day23】Java反射的五大神奇妙用,令人惊叹

Java反射的五大神奇妙用,令人惊叹 Java反射的五大神奇妙用,令人惊叹摘要引言一、什么是反射?一、什么是反射?1.1 为什么需要反射?1.1.1 动态加载类1.1.2 序列化和反序列化1.1.3 框架和库开发 1.2 反射基础 二、类2.1 类完整路径2.2 包路径2.3 类名2.4…

乐鑫科技全球首批支持蓝牙 Mesh Protocol 1.1 协议

乐鑫科技 (688018.SH) 非常高兴地宣布,其自研的蓝牙 Mesh 协议栈 ESP-BLE-MESH 现已支持最新蓝牙 Mesh Protocol 1.1 协议的全部功能,成为全球首批在蓝牙技术联盟 (Bluetooth SIG) 正式发布该协议之前支持该更新的公司之一。这意味着乐鑫在低功耗蓝牙无线…

vue 封装element公共组件 +后端联调

首先封装的是一个分页&#xff0c;也是项目组封装公共组件最多之一 1-1创建一个新的页面放分页功能 <template><div><el-pagination size-change"handleSizeChange" current-change"handleCurrentChange" :current-page"currentPage…

掷骰子的多线程应用程序2基于互斥量的线程同步(复现《Qt C++6.0》)

说明&#xff1a;在复现过程中出现两点问题&#xff08;1&#xff09;run()函数中对m_diceValued的赋值&#xff08;2&#xff09;do_timeOut()函数中没有对m_seq、m_diceValued进行定义。修改后的复现程序如下所示&#xff1a; 主线程&#xff1a; .h #pragma once#include…

python excel复制数据保留单元格格式(.xls.xlsx)

最近帮朋友开发一个数据excel根据条件动态过率的功能.读取生成用pandas很方便,但是这里有一点比较麻烦的是得保留原来的单元格格式.这点操作起来就要麻烦一点了.下面总结了.xlsx和.xls处理 1.xlsx 文件处理 xlsx文件处理可以使用openpyxl库进行处理,比较简单,流程如下 1.获取…

接入网络技术

接入网络&#xff1a;是实现网络边缘的端系统与网络核心连接与接入的网络。 常见有以下几类&#xff1a; 1、电话拨号接入&#xff1a;这类接入方式在早期接入网络中主要用于家庭接入&#xff0c;利用了电话网络覆盖广泛的优点&#xff0c;能够方便地实现分散的家庭用户接入网…

指针笔试题讲解(让指针变得简单易懂)

数组名的理解 : 数组名就是首元素地址 但是有两个例外&#xff1a; 1. sizeof&#xff08;数组名&#xff09;这里的数组名表示整个数组的大小&#xff0c;sizeof&#xff08;数组名&#xff09;计算的是整个数组的大小&#xff0c;单位是字节 2. &数组名 这里的数组…

MouseBoost 3.2.3 Pro右键助手 for Mac

MouseBoost Mac 右键助手是一款专为 Mac 平台开发的鼠标增强工具&#xff0c; 其主要特点如下&#xff1a; 1. 可自定义菜单&#xff1a;MouseBoost Mac 右键助手允许用户自定义右键菜单&#xff0c;可以添加或删除菜单项&#xff0c;以适应不同用户的需求。 2. 多种快捷操作&a…

蓝桥杯 题库 简单 每日十题 day5

01 字符计数 #include<stdio.h> int main() { char c; int i,j0,k0; while((cgetchar())!\n){if(ca||ce||ci||cu||co)j;else k;} printf("%d\n%d",j,k); return 0; }02 棋盘 #include<iostream> using namespace std; const int N 2010; int n,m; int …

C++const关键字

本文旨在讲解C中相关const关键字的详解&#xff0c;希望读完本篇文章&#xff0c;可以让诸位对C中的const关键字有更深一步的认识&#xff01; 在C中&#xff0c;若想让类中某一个变量不再改变&#xff0c;可以使用const关键字进行修饰&#xff0c;让数据不被修改&#xff0c;使…

【AI视野·今日Robot 机器人论文速览 第三十六期】Tue, 19 Sep 2023

AI视野今日CS.Robotics 机器人学论文速览 Tue, 19 Sep 2023 (showing first 100 of 112 entries) Totally 112 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Robotics Papers General In-Hand Object Rotation with Vision and Touch Authors Haozhi Qi, Brent Yi…

element-ui问题合集(el-input-number加减一次就失效,el-select同时收集id与name)

el-select同时收集id与name 将id与name拼接成字符串&#xff0c;赋值给value&#xff0c;在使用时&#xff0c;获取value后&#xff0c;再使用split()方法进行分割 <el-select><el-option v-for"item in selectAttr" :label"item.name" :value&…

【深度学习-第3篇】使用MATLAB快速实现CNN分类(模式识别)任务,含一维、二维、三维数据演示案例

在本文中&#xff0c;我们将介绍如何使用 MATLAB 中的 Convolutional Neural Network&#xff08;CNN&#xff09;进行分类任务。我们将使用 MATLAB 的 Deep Learning Toolbox 来创建、训练和评估 CNN。 一、一个简单的案例 1 安装和准备 首先&#xff0c;确保已安装 MATLAB…