热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

什么是版本控制系统(VCS)?

什么是版本控制系统(VCS)?     因为最近准备开始使用Git管理自己的项目,所以把在学习Git的过程中看到的帮助文档、网友的一些经验心得等内容整理下来,逐步形成自己的使用笔记

什么是版本控制系统(VCS)?

 

        因为最近准备开始使用Git管理自己的项目,所以把在学习Git的过程中看到的帮助文档、网友的一些经验心得等内容整理下来,逐步形成自己的使用笔记,以便日后查阅。

 

        版本控制系统是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。版本控制系统不仅可以应用于软件源代码的文本文件,而且可以对任何类型的文件进行版本控制。

 

        为了让不同系统上的开发者能够协同工作,集中化的版本控制系统应运而生(CVCS)。这类系统都有一个单一的集中管理的服务器,保存所有文件的修订版本。而协同工作的人们都通过客户端连接到这台服务器,获取最新的文件或者提交更新。集中化的版本控制系统,最显而易见的缺点是中央服务器的单点故障问题。如果宕机,那么就会出现谁都无法提交更新的情况,那么也就无法协同工作;如果磁盘发生故障,而备份又不够即时,那么就有丢失数据的风险,最坏的情况是丢失整个项目的历史更改记录。因此,分布式版本控制系统问世了(DVCS)。

 

        在分布式版本控制系统中,客户端不仅仅是只提取最新版本的文件快照,而是把代码仓库完整的镜像下来。所以每一次提取的操作,都是对代码仓库的完整备份,因此也就不必担心协同工作用的服务器发生故障。

 

        Git和其他版本控制系统的主要差别在于:Git只关心文件数据的整体是否发生了变化,而多数的其他系统则只关心文件内容的具体差异,它们在每个版本中记录着各个文件的具体差异。在Git中的绝大多数操作都只需要访问本地文件和资源,不需要联网。这是因为Git在本地磁盘上就保留着所有当前项目的历史更新,所以处理起来速度飞快,这是使用空间换时间的处理方式。使用Git,即使在没有网络或VPN的情况下,你同样可以非常愉快的频繁提交更新,等到有了网络的时候再提交到远程的仓库。

        

         Git管理中文件的三种状态

         对于任何一个文件,在Git内部都只有三种状态:已修改,已暂存和已提交。

         已修改 表示修改了某个文件,但还没有提交保存;

         已暂存 表示把已修改的文件放在下次提交时要保存的清单中了;

         已提交 表示该文件已经被安全的保存在本地数据库中了。

         Git在管理项目时,文件流转的三个工作区域是:本地仓库(即工作目录,也就是项目的源文件)->暂存区域->Git的工作目录。因此,基本的Git工作流程如下:  在本地的工作目录修改某些文件;然后对修改后的文件进行快照,保存到暂存区域;最后提交更新,将保存在暂存区域中的文件快照永久转存到Git的工作目录中。

                                                           《什么是版本控制系统(VCS)?》

                                                              如图所示,基本的Git工作流程:文件在工作目录、暂存区域、Git目录之间的流转。


推荐阅读
  • 网络运维工程师负责确保企业IT基础设施的稳定运行,保障业务连续性和数据安全。他们需要具备多种技能,包括搭建和维护网络环境、监控系统性能、处理突发事件等。本文将探讨网络运维工程师的职业前景及其平均薪酬水平。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 数据库内核开发入门 | 搭建研发环境的初步指南
    本课程将带你从零开始,逐步掌握数据库内核开发的基础知识和实践技能,重点介绍如何搭建OceanBase的开发环境。 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 网络攻防实战:从HTTP到HTTPS的演变
    本文通过一系列日记记录了从发现漏洞到逐步加强安全措施的过程,探讨了如何应对网络攻击并最终实现全面的安全防护。 ... [详细]
  • 在现代网络环境中,两台计算机之间的文件传输需求日益增长。传统的FTP和SSH方式虽然有效,但其配置复杂、步骤繁琐,难以满足快速且安全的传输需求。本文将介绍一种基于Go语言开发的新一代文件传输工具——Croc,它不仅简化了操作流程,还提供了强大的加密和跨平台支持。 ... [详细]
  • 高效解决应用崩溃问题!友盟新版错误分析工具全面升级
    友盟推出的最新版错误分析工具,专为移动开发者设计,提供强大的Crash收集与分析功能。该工具能够实时监控App运行状态,快速发现并修复错误,显著提升应用的稳定性和用户体验。 ... [详细]
  • 本文探讨了Hive中内部表和外部表的区别及其在HDFS上的路径映射,详细解释了两者的创建、加载及删除操作,并提供了查看表详细信息的方法。通过对比这两种表类型,帮助读者理解如何更好地管理和保护数据。 ... [详细]
  • PHP 5.2.5 安装与配置指南
    本文详细介绍了 PHP 5.2.5 的安装和配置步骤,帮助开发者解决常见的环境配置问题,特别是上传图片时遇到的错误。通过本教程,您可以顺利搭建并优化 PHP 运行环境。 ... [详细]
  • 在当前众多持久层框架中,MyBatis(前身为iBatis)凭借其轻量级、易用性和对SQL的直接支持,成为许多开发者的首选。本文将详细探讨MyBatis的核心概念、设计理念及其优势。 ... [详细]
  • 本文深入探讨了Linux系统中网卡绑定(bonding)的七种工作模式。网卡绑定技术通过将多个物理网卡组合成一个逻辑网卡,实现网络冗余、带宽聚合和负载均衡,在生产环境中广泛应用。文章详细介绍了每种模式的特点、适用场景及配置方法。 ... [详细]
  • 本文详细介绍了macOS系统的核心组件,包括如何管理其安全特性——系统完整性保护(SIP),并探讨了不同版本的更新亮点。对于使用macOS系统的用户来说,了解这些信息有助于更好地管理和优化系统性能。 ... [详细]
  • 2023年京东Android面试真题解析与经验分享
    本文由一位拥有6年Android开发经验的工程师撰写,详细解析了京东面试中常见的技术问题。涵盖引用传递、Handler机制、ListView优化、多线程控制及ANR处理等核心知识点。 ... [详细]
  • 解决微信电脑版无法刷朋友圈问题:使用安卓远程投屏方案
    在工作期间想要浏览微信和朋友圈却不太方便?虽然微信电脑版目前不支持直接刷朋友圈,但通过远程投屏技术,可以轻松实现在电脑上操作安卓设备的功能。 ... [详细]
author-avatar
路人不会编程
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有