当前位置: 首页 > news >正文

GIT企业开发使用介绍

0.认识git

git就是一个版本控制器,记录每次的修改以及版本迭代的一个管理系统

至于为什么会有git的出现,主要是为了解决一份代码改了又改,但最后还是要第一版的情况  

  • git 可以控制电脑上所有格式的文档 

1.安装git

 

  • sudo yum install git -y 

2.基本操作 

2.1 初始化本地仓库-git init

.git这个文件是用来追踪管理仓库的 

  • mkdir gitcode
  • cd gitcode
  • git init 

2.2 新增配置项

  • git config user.name "xxxx"
  • git config user.email "xxxxx"
  • 查看配置项: git config -l 
  • 重置配置项:git config --unset  user.name/user.email

  • 加了global之后就是配置的全局 
  •  git config -global user.name "xxxx"
  • git config -global  user.email "xxxxx"
  • 重置配置项:git config --global --unset  user.name/user.email

2.3 工作区  && 暂存区 && 版本库

  • 使用git add时,是把文件放入到了版本库中的暂存区中,也有index索引
  • 使用git commit时,通过HEAD指针,将文件提交到master中的各个分支中 
  • 而git能实现版本控制是通过objects实现的,修改的工作区内容会写入对象库的一个新的git对象中

2.4 添加 && 提交

  • git add 文件名(一个或多个)
  • git commit -m "这次提交的日志信息" 

2.5 查看.git文件

 

  •  由于之前进行了代码的提交,.git中也出现了index索引,而HEAD指针是指向的第一个文件的gitID,也就是我们之前提交的那个文件,并且通过 git cat-file -p gitID,也可以查看文件的信息

2.6 修改文件 && 查看文件状态

  •  git status
  • git diff 文件名

2.7 版本回退 && 查看历史版本

工作区暂存区版本库
git reset -- sort有影响
git reset -- mixed(默认)有影响有影响
git reset -- hard(慎重)有影响有影响有影响

  •  git log --pretty=oneline #查看历史版本
  • git reflog --pretty=oneline #查看历史所以版本
  • git reset --sort --mixed --hard #版本回退

2.8 撤销修改 

注:^表示上一版本,^^表示上二个版本

这些撤销操作都不会影响远程仓库的代码,因为没git push

工作区暂存区版本库解决方式
xxx code

1.手动撤销 -- 不推荐,容易出差

2.git checkout -- [filename] -- 推荐

xxx codexxx code

git reset --hard HEAD  [filename]

git checkout -- [filename]

xxx codexxx codexxx codegit retset --hard HEAD^

  •  git checkout -- [filename] -- 推荐

 

  •  git reset --hard HEAD  [filename]
  • git checkout -- [filename]

 

  •  git retset --hard HEAD^

2.9 删除文件 

  •  git rm [filename] 会删除工作区,暂存区中的文件

3. 分支管理

3.1 理解分支 

  •  git 版本库中有个HEAD指针,指向master主分支,指向的是最新一次提交

  •  既然master是主分支,那么自然就可以在它的基础上,创建分支 && 合并分支

3.2 创建&&切换&&合并分支  

查看当前分支: git branch

  • 创建分支: git branch [分支名]

 

  • 切换分支:git chekout [分支名]

 

  •  在dev分支下对Readme文件,多增加了一行代码,dev中HEAD指针指向的是最新一次修改
  • 所以dev分支和master分支中看到的Readme文件是不同的

 

  •  合并分支: git merge [分支名]

3.3 删除分支 

  • 删除分支: git branch -d [filename] 

3.4 合并冲突 


  •  合并分支发生了冲突,因为master分支和dev分支都对Readme文件进行了修改
  • 导致git不知道该怎么合并了

解决办法:手动修改解决冲突,重新add 和commit 

  • 查看分支以图形结构显示:git log --graph --abbrev-commit 
  • 简短的查看日志: git log --pretty=oneline --abbrrev-commit 

3.5 合并模式

  •  使用git merge [分支名],合并的分支是看不出结构的(在回顾日志的时候

 

  •  推荐在合并分支时:git merge --no-ff -m "xxx" [分支名]

3.6 分支策略

3.7 bug分支

假如我们现在正在 dev 分⽀上进⾏开发,开发到⼀半,突然发现 master 分⽀上⾯有 bug,需要 解决

  • git stash 命令,可以将当前的⼯作区信息进⾏储藏,被储藏的内容可以在将来某个时 间恢复出来( git stash pop )
  • 储藏 dev ⼯作区之后,由于我们要基于master分⽀修复 bug,所以需要切回 master 分⽀,再新建临时分⽀fix-bug来修复 bug
  •  之后再把fix-bug 和 master分支合并

3.8 强制删除分支 

  • 强制删除分支  git branch -D [分支名]

4. 远程操作

4.1 理解分布式版本控制系统 

4.2 创建远程仓库 

 

 4.3 克隆远端仓库-HTTPS

  • 克隆远端仓库: git clone 地址 

 4.5 克隆远端仓库-SSH

 ssh的链接会以https链接更加安全,因为克隆远端仓库,需要配置公钥

 

  •  ssh-keygen -t rsa -C "邮箱名字"
  • cat .ssh/id_rsa.pub #查看公钥

4.6 向远端仓库推送

  •  向远端仓库推送:git push

4.7 拉取远程仓库 

  • 当远端仓库 比 本地仓库更新的时候,就可以进行pull操作(本质就是2个分支的合并)
  • 拉取远程仓库 :git pull origin master : master

4.8 忽略特殊文件 

当在开发过程中,需要忽略一些文件,并将其不被提交时,可以添加到.gitignore

 

  •  !b.so表示b.so可以被git提交

4.9 配置命令别名

  • 配置命令别名:git config --global alias.别名 ‘指令’

4.10 删除在本地显示远端也删除的分支

  •  命令:git remote prune origin
  • 将远程仓库的分支删除之后,再使用git branch -d 分支名,删除本地分支

5.标签

5.1 操作标签

  •  添加标签:git tag 标签名 gitID,git tag -a 标签名 -m "xxx" gitID,不写gitID默认是最新一次提交
  • 查看所有标签:git tag
  • 详细查看标签信息:git tag 标签名
  • 删除标签:git tag -d  标签名

5.2 推送标签 

  • 将本地标签->远端:git push origin 标签名(推送某一个标签),git push origin --tags(推送所有标签) 
  • 将本地删除的标签->远端:git push origin :标签名

6. 多人协作 

同一分支下的多人协作 或 不同分支下的多人协作

6.1 本地分支 与 远程分支关联

 

  •  查看所有分支:git branch -a
  • 关联分支: git checkout -b [分支名] origin/分支名

6.2 Pull Requst表单推送 

  •  使用这种办法进行合并分支到master中,有一个好处,最后这个表单(提交的各种代码信息)
  • 项目经理就会查看一番,更加的安全,维护性也更好

7.企业级开发模型

7.1 企业级开发流程

7.2 系统开发环境

 

7.3 git分支设计模型 

分⽀
名称
适⽤环境
master
主分⽀
⽣产环境
release
预发布分⽀
预发布/测试环境
develop
开发分⽀
开发环境
feature
需求开发分⽀
本地
hotfix
紧急修复分⽀
本地

master 分⽀ 

  • master 为主分⽀,该分⽀为 只读且唯⼀分⽀ 。⽤于部署到正式发布环境,⼀般由合并
    release 分⽀得到
  • 主分⽀作为稳定的唯⼀代码库,任何情况下不允许直接在 master 分⽀上修改代码
  • 产品的功能全部实现后,最终在master分⽀对外发布,另外所有在master分⽀的推送应该 打标签 (tag) 做记录,⽅便追溯
  • master 分⽀不可删除。 

release 分⽀ 

  • release 为预发布分⽀,基于本次上线所有的 feature 分⽀合并到 develop 分⽀之后,基
    develop 分⽀创建。可以部署到测试或预发布集群
  • 命名以 release/ 开头,建议的命名规则: release/version_publishtime
  • release 分⽀主要⽤于提交给测试⼈员进⾏功能测试。发布提测阶段,会以 release 分⽀代码
    为基准进⾏提测
  • 如果在 release 分⽀测试出问题,需要回归验证 develop 分⽀看否存在此问题
     
  • release 分⽀属于临时分⽀,产品上线后可选删除 

develop 分⽀

  • develop 为开发分⽀,基于master分⽀创建的只读且唯⼀分⽀,始终保持最新完成以及 bug 修
    复后的代码。可部署到开发环境对应集群。
  • 可根据需求⼤⼩程度确定是由 feature 分⽀合并,还是直接在上⾯开发(⾮常不建议

feature 分⽀

  • feature 分⽀通常为新功能或新特性开发分⽀,以 develop 分⽀为基础创建 feature
  •  命名以 feature/ 开头,建议的命名规则: feature/user_createtime_feature
  •  新特性或新功能开发完成后,开发⼈员需合到 develop 分⽀
  • ⼀旦该需求发布上线,便将其删除

hotfix 分⽀

  • hotfix 分⽀为线上 bug 修复分⽀或叫 补丁分⽀ ,主要⽤于对线上的版本进⾏ bug 修复。当线上
    出现紧急问题需要⻢上修复时,需要基于 master 分⽀创建 hotfix
  • 命名以 hotfix/ 开头,建议的命名规则: hotfix/user_createtime_hotfix
  • 当问题修复完成后,需要合并到 master 分⽀和 develop 分⽀并推送远程。⼀旦修复上线,便
    将其删除
     

7.4 企业级项目管理 

Gitee 企业版 - 企业级 DevOps 研发效能平台 

 

 

========================================================================= 

相关文章:

GIT企业开发使用介绍

0.认识git git就是一个版本控制器,记录每次的修改以及版本迭代的一个管理系统 至于为什么会有git的出现,主要是为了解决一份代码改了又改,但最后还是要第一版的情况 git 可以控制电脑上所有格式的文档 1.安装git sudo yum install git -y…...

文件上传-前端验证

查看源代码(找验证代码) 1、源代码直接找到验证代码 示例: function checkFileExt(filename){var flag false; //状态var arr ["jpg","png","gif"]; //允许上传的文件//取出上传文件的扩展名var index f…...

ROT加密算法login-RESERVE

ROT算法(字母轮换加密) 也称为Caesar加密,是一种简单的字母替换加密算法。它通过将字母表中的每个字母向后(或向前)移动固定的位置来加密文本。 加密步骤: 选择一个固定的偏移量(通常是1到25之间的整数)&…...

C++ 新特性 | C++20 常用新特性介绍

目录 1、模块(Modules) 2、协程(Coroutines) 3、概念(Concepts) 4、范围(Ranges) 5、三向比较符(three-way comparison) C软件异常排查从入门到精通系列教程(专栏文章列表,欢迎订阅,持续更新...)https…...

Java设计模式之策略模式实践

1、策略接口 /*** 策略接口*/ public interface DemoStrategy {Result execute(); } 2、策略工厂 /*** 策略工厂*/ Component public class DemoFactory {Resourceprivate final Map<String, DemoStrategy> demoStrategy new ConcurrentHashMap<>();public Demo…...

C语言——结构体数组、结构体指针、结构体函数与二级指针

C语言中的结构体&#xff08;struct&#xff09;是一种用户自定义的数据类型&#xff0c;它允许你将不同类型的数据项组合成一个单一的类型。结构体数组则是一种特殊的数组&#xff0c;其元素为结构体类型。这意味着你可以在一个数组中存储多个具有相同结构的记录。 定义结构体…...

【4】策略模式

如上图所示&#xff0c;如果要加入一个新的货币&#xff0c;那么就需要对类中的Calculate函数进行修改&#xff0c;这违背了封闭开放原则。 上图中的方式更加合适&#xff0c;搞一个抽象类&#xff08;方法中可以用多态调用&#xff09;&#xff0c;然后每个货币自己是一个类&a…...

BGP 反射器联邦实验

要求&#xff1a; 1.如图连接网络&#xff0c;合理规划IP地址&#xff0c;AS 200内IGP协议为OSPF 2.R1属于AS 100&#xff1b;R2-R3-R4小AS 234 R5-R6-R7小AS 567&#xff0c;同时声明大AS 200&#xff0c;R8属于AS 300 3.R2-R5 R4-R7 之间为联邦EBGP邻居关系 4.R1-R8之…...

stm32入门学习13-时钟RTC

&#xff08;一&#xff09;时钟RTC stm32内部集成了一个秒计数器RTC&#xff0c;用于显示我们日常的时间&#xff0c;如日期年月日&#xff0c;时分秒等&#xff0c;RTC的主要原理就是进行每秒自增&#xff0c;如果我们知道开始记秒的开始时间&#xff0c;就可以计算现在的日…...

vuex properties of undefined (reading ‘getters‘)

前言&#xff1a; 最近打算用vue 写个音乐播放器&#xff0c;在搞 vuex 的时候遇到一个很神奇报错&#xff1b;vuex 姿势练了千百次了&#xff0c;刚开始的时候我一直以为是代码问题&#xff0c;反复检查了带了&#xff0c;依旧报错。 Error in mounted hook: "TypeError:…...

再谈表的约束

文章目录 自增长唯一键外键 自增长 auto_increment&#xff1a;当对应的字段&#xff0c;不给值&#xff0c;会自动的被系统触发&#xff0c;系统会从当前字段中已经有的最大值1操作&#xff0c;得到一个新的不同的值。通常和主键搭配使用&#xff0c;作为逻辑主键。 自增长的…...

认识一下测试策略与测试方案

目录 测试方案 测试策略 测试策略的内容主要包括 测试技术和工具 测试启动、停止和完成标准 风险分析和应对方案 测试范围 测试角色和职责 测试方法和类型 测试工具 测试层级 测试指标 测试可交付成果 测试方案的内容包括 测试目标 测试范围 测试环境 测试策略…...

Gradle 查看包的依赖关系

在 Terminal 中可以通过 gradle 的命令查看项目中使用的依赖库及其版本&#xff0c;并且可以更加直观的看到各个模块中库之间的依赖关系。同时也可以跟踪并解决与库版本冲突有关的问题。 工具查看 在 Android Studio 中选择 View > Tool Windoors > Gradle 或者直接选择…...

虚幻5|给攻击添加特效

一&#xff0c;打开武器蓝图 选择武器网格体&#xff0c;在细节处找到组件开始重叠&#xff0c;点击 写下以下蓝图&#xff0c;这是最终蓝图&#xff0c;后面会分讲要点 二&#xff0c;actor拥有标签&#xff0c;就是被击打的敌人&#xff0c;我们给actor添加标签 到主界面&am…...

Delphi包管理与依赖:掌握GetIt与DelphiPI的艺术

标题&#xff1a;Delphi包管理与依赖&#xff1a;掌握GetIt与DelphiPI的艺术 在Delphi的广袤生态中&#xff0c;包管理和依赖解决方案是构建大型项目不可或缺的工具。本文将深入探讨Delphi中的两种主要包管理工具&#xff1a;GetIt包管理器和DelphiPI&#xff0c;通过实际代码…...

如何使用unittest和pytest进行python脚本的单元测试

1. 关于unittest和pytest unittest是python内置的支持单元测试的模块&#xff0c;他提供了核心类&#xff0c;TestCase&#xff0c;让单元测试 代码的编写不再是从0开始&#xff0c;不再是作坊式&#xff0c;而是标准化&#xff0c;模板化&#xff0c;工厂化。 pytest是第三方…...

Java中的值传递与引用传递

Java中的值传递与引用传递 在Java编程中&#xff0c;理解值传递与引用传递的概念是编写无误代码的关键。这两个概念有时会让人感到困惑&#xff0c;特别是当它们与对象有关时。现在&#xff0c;我们将一步步地解释这两个概念&#xff0c;帮助你彻底理解它们。 1. 值传递与引用…...

Seaborn库

目录 主要功能和特点 使用方法 实例应用 Seaborn库的最新版本有哪些新功能和改进&#xff1f; 如何在Seaborn中实现复杂的数据预处理步骤&#xff0c;例如数据清洗和转换&#xff1f; Seaborn与其他数据可视化库&#xff08;如Matplotlib、Plotly&#xff09;相比有哪些优…...

openresty整合modsecurity

安装依赖包 安装依赖 yum -y install gcc-c flex bison yajl yajl-devel curl-devel curl GeoIP-devel doxygen zlib-devel libtool libxml2-devel libxslt-devel安装依赖包 ftp://ftp.icm.edu.pl/vol/rzm7/linux-centos-vault/7.8.2003/sclo/x86_64/rh/Packages/d/devtools…...

结构体structure、共用体union

目录 结构体 结构体类型的定义形式 结构体类型的大小 内存计算例子 共用体union 用共用体判断大小端 结构体和共用体对比 qsort&#xff08;&#xff09; 结构体 结构体类型——用来描述复杂数据的一种数据类型 构造类型&#xff08;用户自定义类型&#xff09; struc…...

conda相比python好处

Conda 作为 Python 的环境和包管理工具&#xff0c;相比原生 Python 生态&#xff08;如 pip 虚拟环境&#xff09;有许多独特优势&#xff0c;尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处&#xff1a; 一、一站式环境管理&#xff1a…...

手游刚开服就被攻击怎么办?如何防御DDoS?

开服初期是手游最脆弱的阶段&#xff0c;极易成为DDoS攻击的目标。一旦遭遇攻击&#xff0c;可能导致服务器瘫痪、玩家流失&#xff0c;甚至造成巨大经济损失。本文为开发者提供一套简洁有效的应急与防御方案&#xff0c;帮助快速应对并构建长期防护体系。 一、遭遇攻击的紧急应…...

linux之kylin系统nginx的安装

一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源&#xff08;HTML/CSS/图片等&#xff09;&#xff0c;响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址&#xff0c;提高安全性 3.负载均衡服务器 支持多种策略分发流量…...

黑马Mybatis

Mybatis 表现层&#xff1a;页面展示 业务层&#xff1a;逻辑处理 持久层&#xff1a;持久数据化保存 在这里插入图片描述 Mybatis快速入门 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/6501c2109c4442118ceb6014725e48e4.png //logback.xml <?xml ver…...

AtCoder 第409​场初级竞赛 A~E题解

A Conflict 【题目链接】 原题链接&#xff1a;A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串&#xff0c;只有在同时为 o 时输出 Yes 并结束程序&#xff0c;否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...

反射获取方法和属性

Java反射获取方法 在Java中&#xff0c;反射&#xff08;Reflection&#xff09;是一种强大的机制&#xff0c;允许程序在运行时访问和操作类的内部属性和方法。通过反射&#xff0c;可以动态地创建对象、调用方法、改变属性值&#xff0c;这在很多Java框架中如Spring和Hiberna…...

学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”

2025年#高考 将在近日拉开帷幕&#xff0c;#AI 监考一度冲上热搜。当AI深度融入高考&#xff0c;#时间同步 不再是辅助功能&#xff0c;而是决定AI监考系统成败的“生命线”。 AI亮相2025高考&#xff0c;40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕&#xff0c;江西、…...

STM32HAL库USART源代码解析及应用

STM32HAL库USART源代码解析 前言STM32CubeIDE配置串口USART和UART的选择使用模式参数设置GPIO配置DMA配置中断配置硬件流控制使能生成代码解析和使用方法串口初始化__UART_HandleTypeDef结构体浅析HAL库代码实际使用方法使用轮询方式发送使用轮询方式接收使用中断方式发送使用中…...

前端高频面试题2:浏览器/计算机网络

本专栏相关链接 前端高频面试题1&#xff1a;HTML/CSS 前端高频面试题2&#xff1a;浏览器/计算机网络 前端高频面试题3&#xff1a;JavaScript 1.什么是强缓存、协商缓存&#xff1f; 强缓存&#xff1a; 当浏览器请求资源时&#xff0c;首先检查本地缓存是否命中。如果命…...

Unity VR/MR开发-VR开发与传统3D开发的差异

视频讲解链接&#xff1a;【XR马斯维】VR/MR开发与传统3D开发的差异【UnityVR/MR开发教程--入门】_哔哩哔哩_bilibili...