【Git系列】了解什么是版本控制

🐳了解什么是版本控制

    • 🧊1. 什么是版本控制
    • 🧊2. 为什么要有版本控制
    • 🧊3. 常见的版本控制工具
    • 🧊4. 版本控制分类
      • 🪟4.1 本地版本控制
      • 🪟4.2 集中版本控制
      • 🪟4.3 分布式版本控制

学习git之前,我们需要先明白一个概念,版本控制!

🧊1. 什么是版本控制

​ 版本控制(Revision control)是一种软件工程技术,用于管理开发过程中对文件、目录或工程等内容的修改历史,以便查看更改历史记录并恢复以前的版本。

简单说就是用于管理多人协同开发项目的技术。

​ 举个例子,假设你正在开发一个网站,你和你的团队成员都在修改网站的代码。在没有版本控制的情况下,如果你想回到之前的版本,你需要手动保存每个版本的副本。这样做不仅容易出错,而且难以管理。但是,如果你使用版本控制系统,它会自动为你保存每次提交的快照。这样,如果你想回到之前的版本,只需在版本控制系统中选择相应的版本即可。此外,版本控制系统还可以帮助你查看每个版本之间的差异,并帮助你解决代码冲突。

🧊2. 为什么要有版本控制

版本控制非常重要,因为它可以帮助开发人员更好地管理他们的代码。以下是一些使用版本控制的好处:

  • 备份和恢复:版本控制系统会自动保存每次提交的快照,因此你可以随时回到之前的版本。
  • 协作:版本控制系统可以帮助多个开发人员协同工作,解决代码冲突。
  • 追踪更改:版本控制系统可以帮助你查看每个版本之间的差异,了解谁更改了什么。
  • 测试和调试:使用版本控制系统,你可以轻松地切换到不同的版本,以便测试和调试。

总之,版本控制可以帮助开发人员更好地管理他们的代码,提高开发效率。

🧊3. 常见的版本控制工具

主流的版本控制器
Git是一个分布式版本控制系统,最初由 Linus Torvalds 开发,用于管理 Linux 内核开发。
SVN(Subversion)是一个集中式版本控制系统,由 CollabNet 开发

除了 GitSVN 之外,还有一些其他的版本控制器,例如 MercurialBazaarDarcs 等。这些版本控制器都有各自的特点和优势,可以根据项目需求选择合适的版本控制器。

🧊4. 版本控制分类

🪟4.1 本地版本控制

  本地版本控制系统是一种早期的版本控制方法,它在本地计算机上保存文件的历史版本。在没有使用版本控制的适合,大多数人习惯用复制整个项目目录的方式来保存不同的版本,或许还会改名加上备份时间以示区别。这么做唯一的好处就是简单,但是特别容易犯错。有时候会混淆所在的工作目录,一不小心会写错文件或者覆盖意想外的文件。

  为了解决这个问题,人们很久以前就开发了许多种本地版本控制系统,大多都是采用某种简单的数据库来记录文件的历次更新差异。其中最流行的一种叫做 RCS,现今许多计算机系统上都还看得到它的踪影。RCS 的工作原理是在硬盘上保存补丁集(补丁是指文件修订前后的变化);通过应用所有的补丁,可以重新计算出各个版本的文件内容。

请添加图片描述

  然而,随着项目规模和协作人数的增加,本地版本控制系统很难满足需求。因此,人们开发了集中式分布式版本控制系统来解决这些问题。

🪟4.2 集中版本控制

集中式版本控制是一种使用中央服务器来管理代码版本和备份的系统。所有的用户都需要从中央服务器获取或提交代码,这样可以方便地协同工作和控制权限,但也需要依赖网络环境和中央服务器的稳定性。

代表产品:SVNCVSVSS

img

  假设你和你的同事都在开发一个网站项目,你们使用 SVN(Subversion)这个集中式版本控制系统来管理代码。你们的代码都存放在一个中央服务器上,每次你想要修改或添加代码,你就需要从服务器上下载最新的版本,然后在本地编辑,再上传到服务器上。这样,你就可以保证你的代码和你的同事的代码是一致的,而且服务器上有所有的历史记录,方便追踪和回滚。这就是一个集中式版本控制。

  这种做法带来了许多好处,特别是相较于老式的本地版本控制系统来说。现在,每个人都可以在一定程度上看到项目中的其他人正在做些什么。而管理员也可以轻松掌控每个开发者的权限,并且管理一个 CVCS 要远比在各个客户端上维护本地数据库来得轻松容易。

  然而,这种做法也有一些缺点。最显而易见的缺点是中央服务器的单点故障。如果宕机一小时,那么在这一小时内,谁都无法提交更新,也就无法协同工作。如果中心数据库所在的磁盘发生损坏,又没有做恰当备份,毫无疑问你将丢失所有数据——包括项目的整个变更历史,只剩下人们在各自机器上保留的单独快照。

🪟4.3 分布式版本控制

  分布式版本控制允许多个开发者在本地分别拥有一个完整的代码库,而不是像集中式版本控制那样,所有开发者都需要连接到同一个中央代码库。这意味着开发者可以在本地进行版本控制操作,而不必依赖于中央服务器。相当于中央服务器和本地都有一个版本控制系统,开发过程中两者不冲突也不依赖。

  常见的分布式版本控制有Git,是目前世界上最先进的分布式版本控制系统之一。它可以让每个人都可以创建一个独立的代码仓库用于管理,各种版本控制的操作都可以在本地完成。

img

  假如两个同事对同一个项目进行开发,本地都安装了一个Git,这时他们甚至不必连接到中央服务器,在没有网络连接的情况下进行版本控制操作,张三开发A功能,李四开发B功能,开发完后他俩同时推给中央服务器的版本控制系统,此时张三和李四都能从中央服务器拉取对方的代码并在本地合并,即使中央服务器损坏,他们本地都包含项目的整个变更历史,解决集中式版本控制丢失所有数据的缺点,而这里的中央服务器的作用可以理解为方便大家交换和修改。


请添加图片描述

一、了解什么是版本控制

二、Git概述

三、Git下载与安装教程

四、Git相关命令

五、Git分支操作

六、Git到远程仓库

七、Git配置SSH免密登录

八、IDEA集成Git


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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Elasticsearch和Kibana的安装及验证

金翅大鹏盖世英,展翅金鹏盖世雄。 穿云燕子锡今鸽,踏雪无痕花云平。 ---------------- 2023.7.31.101 ----------------- 本文密钥:365 Elasticsearch 是一个分布式的 RESTful 风格的搜索和数据分析引擎,常用来进行全文检索、…

redis 第三章

目录 1.主从复制 2.哨兵 3.集群 4.总结 1.主从复制 结果: 2.哨兵 3.集群 4.总结 通过集群,redis 解决了写操作无法负载均衡,以及存储能力受到单机限制的问题,实现了较为完善的高可用方案。

安全学习DAY09_加密逆向,特征识别

算法逆向&加密算法分类,特征识别 文章目录 算法逆向&加密算法分类,特征识别算法概念,分类单向散列加密 - MD5对称加密 - AES非对称加密 - RSA 常见加密算法识别特征,解密特点MD5密文特点BASE64编码特点AES、DES特点RSA密文…

Stable Diffusion 硬核生存指南:WebUI 中的 VAE

本篇文章聊聊 Stable Diffusion 生态中呼声最高、也是最复杂的开源模型管理图形界面 “stable-diffusion-webui” 中和 VAE 相关的事情。 写在前面 Stable Diffusion 生态中有一个很重要的项目,它对于 SD 生态繁荣做出的贡献可以说居功至伟,自去年八月…

【C++】string

string 1. 简单了解string2. string的常用接口3. 简单模拟实现string4. 写时拷贝5. 练习 1. 简单了解string string是表示字符串的字符类,其底层是basic_string模板类的实例化,只能存储单字节的字符串,不能操作多字节和变长字符的序列。在使…

LLM微调 | Adapter: Parameter-Efficient Transfer Learning for NLP

目的:大模型预训练微调范式,微调成本高。adapter只只微调新增的小部分参数【但adapter增加了模型层数,引入了额外的推理延迟。】 Adapters最初来源于CV领域的《Learning multiple visual domains with residual adapters》一文,其…

Android 13(T) - Media框架(1)- 总览

从事Android Media开发工作三年有余,刚从萌新变成菜鸟,一路上跌跌撞撞学习,看了很多零零碎碎的知识,为了加深对Android Media框架的理解,决定在这里记录下学习过程中想到的一些问题以及一些思考,也希望对初…

更好搭建负载测试环境的六个技巧

如果你如我昨天谈到的客户一样,花费了24到48个小时用于每个负载测试环境的搭建,那你的测试及构建部署能力绝对是受限的。 搭建一个仿真测试环境对于做好负载测试非常重要,同时它也是一个非常具有挑战性的任务,需要考虑技术解决、…

【CSS】手写 Tooltip 提示组件

文章目录 效果示例代码实现 效果示例 代码实现 <!DOCTYPE html> <html><head><meta charset"utf-8"><title>一颗不甘坠落的流星</title><style>body {padding: 120px;}.tooltip {position: relative;display: inline-blo…

【Linux取经路】进度条小程序

文章目录 一、预备知识1.1 回车换行1.2 缓冲区 二、倒计时2.1 注意事项 三、进度条3.1 源代码3.2 代码分析3.2 实际使用场景 一、预备知识 1.1 回车换行 一般意义上的回车换行是两个独立的独立的动作&#xff0c;而C语言中的\n则同时完成了回车和换行的工作。回车是将光标移动…

【EI/SCOPUS会议征稿】2023年第四届新能源与电气科技国际学术研讨会 (ISNEET 2023)

作为全球科技创新大趋势的引领者&#xff0c;中国一直在为科技创新创造越来越开放的环境&#xff0c;提高学术合作的深度和广度&#xff0c;构建惠及全民的创新共同体。这些努力为全球化和创建共享未来的共同体做出了新的贡献。 为交流近年来国内外在新能源和电气技术领域的最新…

谈谈网络端口的概念、分类,以及常见的端口号

作者&#xff1a;Insist-- 个人主页&#xff1a;insist--个人主页 作者会持续更新网络知识和python基础知识&#xff0c;期待你的关注 目录 一、网络端口的概念 二、网络端口的分类 1、公认端口 2、注册端口 3、动态和私有端口 三、网络端口的作用 四、常见的端口号 1、…

C/C++多线程操作

文章目录 多线程C创建线程join 和detachthis_thread线程操作锁lock_guardunique_lock 条件变量 condition_variablewaitwaitfor C语言线程创建线程同步 参考 多线程 传统的C&#xff08;C11标准之前&#xff09;中并没有引入线程这个概念&#xff0c;在C11出来之前&#xff0c…

分布式ID性能评测:CosId VS 美团 Leaf

环境 MacBook Pro (M1)JDK 17JMH 1.36运行在本机 Docker 内的 mariadb:10.6.4 运行 CosId SegmentChainId 模式&#xff0c;基准测试代码&#xff1a; Benchmarkpublic long generate() {return segmentChainId.generate();}Leaf 基准测试代码&#xff1a; Benchmarkpublic l…

nsq整体架构及各个部件作用详解

文章目录 前言 nsq的整体架构图 部件&#xff1a;nsqd 部件&#xff1a;nsqlookupd 部件&#xff1a;nsq连接库 部件&#xff1a;nsqadmin 前言 上两篇博客 centos环境搭建nsq单点_YZF_Kevin的博客-CSDN博客 linux环境搭建nsq集群_YZF_Kevin的博客-CSDN博客 我们讲了nsq是…

《MySQL 实战 45 讲》课程学习笔记(一)

基础架构&#xff1a;一条 SQL 查询语句是如何执行的&#xff1f; MySQL 的基本架构 MySQL 可以分为 Server 层和存储引擎层两部分。 Server 层 包括连接器、查询缓存、分析器、优化器、执行器&#xff1b;涵盖 MySQL 的大多数核心服务功能&#xff0c;以及所有的内置函数&…

华为数通HCIP-VPN技术-mpls vpn

VPN&#xff08;虚拟专线网络&#xff09; 作用&#xff1a;实现广域互联&#xff08;不同地域局域网之间跨越公网进行互通&#xff09;&#xff1b; VPN&#xff08;Virtual Private Network&#xff0c;虚拟专用网络&#xff09;指的是在一个公共网络中实现虚拟的专用网络&…

python速成之循环分支结构学习

循环结构 应用场景 我们在写程序的时候&#xff0c;一定会遇到需要重复执行某条或某些指令的场景。例如用程序控制机器人踢足球&#xff0c;如果机器人持球而且还没有进入射门范围&#xff0c;那么我们就要一直发出让机器人向球门方向移动的指令。在这个场景中&#xff0c;让…

无涯教程-jQuery - serialize( )方法函数

serialize()方法将一组输入元素序列化为数据字符串。 serialize( ) - 语法 $.serialize( ) serialize( ) - 示例 假设无涯教程在serialize.php文件中具有以下PHP内容- <?php if( $_REQUEST["name"] ) {$name$_REQUEST[name];echo "Welcome ". $na…

【Unity2D】Order in Layer 与Layer的区别

Order in Layer 是Unity 图形渲染的顺序&#xff0c;通过设置Order in Layer &#xff0c;可以设置同层(Layer)的物体出现顺序&#xff0c;可以默认使一种物体出现在另一种物体前方 设置一物体默认在其他物体之上不被遮挡 Layer是Unity中物体的层级&#xff0c;不同物体可以位…