Git 学习笔记 | 版本控制和版本控制工具

news2024/12/23 15:05:03

Git 学习笔记 | 版本控制和版本控制工具

  • Git 学习笔记 | 版本控制和版本控制工具
    • 什么是版本控制?
    • 版本管理工具的特性
    • 版本管理工具的发展简史
    • 主流的版本控制器
      • 本地版本控制
      • 集中版本控制
      • 分布式版本控制
    • Git与SVN的主要区别

Git 学习笔记 | 版本控制和版本控制工具

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

什么是版本控制?

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

需求:

  • 实现跨区域多人协同开发

  • 追踪和记载一个或者多个文件的历史记录

  • 组织和保护你的源代码和文档

  • 统计工作量

  • 并行开发、提高开发效率

  • 跟踪记录整个软件的开发过程

  • 减轻开发人员的负担,节省时间,同时降低人为错误

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

没有进行版本控制或者版本控制本身缺乏正确的流程管理,在软件开发过程中将会引入很多问题,如软件代码的一致性、软件内容的冗余、软件过程的事物性、软件开发过程中的并发性、软件源代码的安全性,以及软件的整合等问题。

版本管理工具的特性

版本管理工具一般具有如下特性:

  1. 能够记录历史版本,回退历史版本
  2. 团队开发,方便代码合并

版本管理工具的发展简史

在这里插入图片描述

主流的版本控制器

主流的版本控制器有如下这些:

  • Git

  • SVN(Subversion)

  • CVS(Concurrent Versions System)

  • VSS(Micorosoft Visual SourceSafe)

  • TFS(Team Foundation Server)

  • Visual Studio Online

版本控制产品非常的多(Perforce、Rational ClearCase、RCS(GNU Revision Control System)、Serena Dimention、SVK、BitKeeper、Monotone、Bazaar、Mercurial、SourceGear Vault),现在影响力最大且使用最广泛的是Git与SVN。

本地版本控制

记录文件每次的更新,可以对每个版本做一个快照,或是记录补丁文件,适合个人用,如RCS。

在这里插入图片描述

工作流程如下:

  1. 从中央服务器远程仓库下载代码
  2. 修改后将代码提交到中央服务器远程仓库

优缺点:

优点:简单,易操作
缺点:所有代码必须放在中央服务器,服务器一旦宕机无法提交代码,即容错性较差,离线无法提交代码,无法及时记录我们的提交行为

SVN流程图:

在这里插入图片描述

集中版本控制

所有的版本数据都存在服务器上,用户的本地只有自己以前所同步的版本,如果不连网的话,用户就看不到历史版本,也无法切换版本验证问题,或在不同分支工作。而且,所有数据都保存在单一的服务器上,有很大的风险这个服务器会损坏,这样就会丢失所有的数据,当然可以定期备份。代表产品:SVN、CVS、VSS。

SVN是集中式版本控制系统,版本库是集中放在中央服务器的。

所有的版本数据都保存在服务器上,协同开发者从服务器上同步更新或上传自己的修改。

在这里插入图片描述

分布式版本控制

Git是分布式版本控制系统(Distributed Version Control System,简称 DVCS),分为两种类型的仓库:本地仓库和远程仓库。

工作流程如下:

  1. 从远程仓库中克隆或拉取代码到本地仓库(clone/pull)
  2. 从本地进行代码修改
  3. 在提交前先将代码提交到暂存区
  4. 提交到本地仓库。本地仓库中保存修改的各个历史版本
  5. 修改完成后,需要和团队成员共享代码时,将代码push到远程仓库

所有版本信息仓库全部同步到本地的每个用户,这样就可以在本地查看所有版本历史,可以离线在本地提交,只需在连网时push到相应的服务器或其他用户那里。由于每个用户那里保存的都是所有的版本数据,只要有一个用户的设备没有问题就可以恢复所有的数据,但这增加了本地存储空间的占用。

不会因为服务器损坏或者网络问题,造成不能工作的情况。

在这里插入图片描述

Git 流程图:

在这里插入图片描述

Git 是目前世界上最先进的分布式版本控制系统。

Git与SVN的主要区别

SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而工作的时候,用的都是自己的电脑,所以首先要从中央服务器得到最新的版本,然后工作,完成工作后,需要把自己做完的活推送到中央服务器。集中式版本控制系统是必须联网才能工作,对网络带宽要求较高。

总结:

  1. svn 是集中式版本控制工具,git 是分布式版本控制工具
  2. svn 不支持离线提交,git 支持离线提交代码

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

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

相关文章

孕期能吃韭黄吗?坐月子和哺乳期能吃韭黄吗?宝宝能不能吃韭黄?

韭黄又称韭芽、黄韭、韭菜白。韭菜隔绝光线,完全在黑暗中生长,因无阳光供给,不能进行光合作用,合成叶绿素,就会变成黄色,称之为「韭黄」。 孕期能吃吗? 能吃 韭黄味道独特,富含膳…

[Python入门教程]01 Python开发环境搭建

Python开发环境搭建 本文介绍python开发环境的安装,使用anaconda做环境管理,VS code写代码。搭建开发环境是学习的第一步,本文将详细介绍anaconda和vs code的安装过程,并测试安装结果。 视频教程链接:https://www.bil…

【ElasticSearch】深入了解 ElasticSearch:开源搜索引擎的力量

文章目录 前言一、初识 ElasticSearch 搜索引擎1.1 ElasticSearch 的核心概念1.2 ElasticSearch 的演进历程1.3 ElasticSearch 的优势与未来 二、正排索引与倒排索引:数据库与 ElasticSearch 的差异2.1 对正排索引的认识2.2 对倒排索引的认识2.3 正排索引 vs. 倒排索…

强迫症福音!一个小技巧,让DALLE-3创作排列美学

夕小瑶科技说 原创 编译 | 奶茶子 最近在Twitter上有一条备受欢迎的推文,其介绍了一个令人印象深刻的DALL-E应用。该推文中写道:“你可以使用DALL-E 3来制作一些令人惊叹的整齐排列风格的Knolling照片。”作者(chaseleantj)还分享了他所生成的Knolling…

【Golang】DFA算法过滤敏感词Golang实现

什么是DFA算法 DFA全称:Deterministic Finite Automaton,翻译过来就是确定性有限自动机,其特征是,有一个有限状态集合和一些从一个状态通向另一个状态的边,每条边上标记有一个符号,其中一个状态是初态&…

java 常见api Arrays类

int类型数组 package daysreplace;import java.util.Arrays;public class Test {public static void main(String[] args) {int[] arrays{38,24,42,56,22,44};//直接输出数组名称就是内存地址System.out.println(arrays);//Arrays.toString()会将数组内容转成字符串形式System…

6款好用良心的国产软件,每一款都是精品,电脑秒变黑科技

在如今科技发展迅猛的时代,我们在工作中基本都会使用到电脑,其实电脑上有很多非常实用的软件,能够提高我们的工作效率。今天给大家分享6款良心好用的国产软件,每一款都是精品,让你电脑秒变黑科技。 01、滴答清单 滴答清…

mac文件为什么不能拖进U盘?

对于Mac用户来说,可能会遭遇一些烦恼,比如在试图将文件从Mac电脑拖入U盘时,却发现文件无法成功传输。这无疑给用户带来了很大的不便。那么,mac文件为什么不能拖进U盘,看完这篇你就知道了。 一、U盘的读写权限问题 如果…

17795-2019 建筑绝热用玻璃棉制品 思维导图

声明 本文是学习GB-T 17795-2019 建筑绝热用玻璃棉制品.pdf而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 1 范围 本标准规定了建筑绝热用玻璃棉制品的分类和标记、技术要求、试验方法、检验规则以及标志、包 装、运输和贮存。 本标准适用于建筑围…

归并排序与非比较排序详解

W...Y的主页 😊 代码仓库分享 💕 🍔前言: 上篇博客我们讲解了非常重要的快速排序,相信大家已经学会了。最后我们再学习一种特殊的排序手法——归并排序。话不多说我们直接上菜。 目录 归并排序 基本思想 递归思路…

Altium Designer培训 | 2 - 原理图库创建篇

目录 原理图界面屏幕放大&缩小&移动 元件库介绍及电阻容模型的创建 【SCH Library】面板 元件符号 绘制一只电阻的模型 设置栅格大小 绘制一只电容的模型 IC类元件模型的创建 排针类元件模型的创建 光耦及二极管元件模型 现有元件模型的调用 参考上一篇文章…

10.6数构(概念,优先队列复习,漏斗倒水时间期望,小木棍dfs,括号匹配,后缀表达式,PTA第三题)

选择应试 数据项是数据的最小单位 数据的逻辑结构与数据元素本身的内容和形式无关 带头结点的单循环链表中,任一结点的后继结点的指针域均不空 顺序存储结构的主要缺点是不利于插入或删除操作 顺序存储方式不仅能用于存储线性结构,还可以用来存放非…

【juc】countdownlatch实现并发网络请求

目录 一、截图示例二、代码示例2.1 测试代码2.2 接口代码 一、截图示例 二、代码示例 2.1 测试代码 package com.learning.countdownlatch;import lombok.extern.slf4j.Slf4j; import org.springframework.web.client.RestTemplate;import java.util.Arrays; import java.uti…

基于SSM的药房药品采购集中管理系统的设计与实现

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:采用Vue技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#x…

【UE5 Cesium】15-Cesium for Unreal 加载本地地形

目录 一、加载全球无高度地形 二、加载区域DEM 效果 一、加载全球无高度地形 1. 先去如下网址下载全球无高度地形:Using a global terrain layer without height detail - #9 by RidhwanAziz - Cesium for Unreal - Cesium Community 下载后如下: 解…

【Spring Cloud系统】- Zookeer特性与使用场景

【Spring Cloud系统】- Zookeer特性与使用场景 一、概述 Zookeeper是一个分布式服务框架,是Apache Hadoop的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题。如:统一命名服务、状态同步服务、集群管理、分布式应用配置…

华为云云耀云服务器L实例评测|Ubuntu 22.04部署edusoho-ct企培版教程 | 支持华为云视频点播对接CDN加速

华为云云耀云服务器L实例评测|Ubuntu 22.04部署edusoho企培版教程 1、选择购买 华为云耀云服务器L实例 简单上云第一步 2、选择你要安装的操作系统,例如 Ubuntu 22.04 server 64bit 3、然后支付订单就行了 4、华为云云耀云服务器L实例创建好之后&#x…

2023年台州市第三届网络安全技能大赛(MISC)—Black Mamba

前言:当时比赛没有做出来现在来复现一下 就当记录一下(这个思路没想到) Black Mamba: 一张图片 常规得分离,属性,LSB,盲水印等都尝试过 无果! 考点:异或解密&#xff0…

一篇理解TCP协议

一、TCP协议概念。 TCP(Transmission Control Protocol,传输控制协议)是一种面向连接的、可靠的传输层协议。它主要用于在计算机网络中,通过建立可靠的通信连接来进行数据传输。 TCP协议的特点如下: 可靠性&#xf…

满足你甜食需求的葡萄酒是怎样的?

也许这是不言而喻的,但我们认为,如果没有一杯完美的葡萄酒来补充你最喜爱的菜肴的复杂风味,一顿美食就不完整。无论您是享用美味的葡萄酒作为开胃菜,还是搭配主菜,我们相信我们最喜爱的饮料是一餐中任何部分的完美补充…