ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Git学习第一章——版本控制

2021-12-28 23:33:46  阅读:152  来源: 互联网

标签:文件 Git 快照 版本控制 第一章 git 版本


Git:

git简介:

         1.git是一个版本控制系统

         2.git是开源的

         3.git是容易学习

         4.git比其他的版本控制系统有优势        

        大名鼎鼎的github用的就是git系统来管理它们的网站,这里需要区分一下,github和git是两个东西,github是一个社区,git是一个服务系统,github只支持git分布式系统,所以故名成为github。

1.版本控制

        首先要了解git,我们首先需要了解到“版本控制”。那什么是版本控制呢?我们又为什么需要关心它呢?版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修改情况的系统。有了版本控制系统(VCS),我们就可以将选定的文件回溯到之前的状态,甚至将整个项目都回退到过去某个时间点的状态,你可以比较文件的变化细节,查出最后是谁修改了哪个地方,从而找出导致怪异问题出现的原因,又是谁在何时报告了某个功能缺陷等等。使用版本控制意味着,就算你乱来一通把整个项目中的文件修修改改,你也可以轻松回复到原本的样子。

1.1本地版本控制

        本地版本控制大都是采用某种简单的数据库来记录文件的历次更新差异。 

        其中最流行的一种叫做RCS,它的工作原理是在硬盘上保存补丁集(补丁集就是文件修订前后的变化);通过应用所有的补丁,可以重新计算出各个版本的文件内容。

 

1.2 集中化的版本控制系统

        为了解决让不同系统上的开发者协同工作,集中化的版本控制系统(CVCS)出现了。比如CVS、Subversion等,都有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户链接到在这台服务器,取出最新的文件或者提交更新。

 

        但是这样的做法有好有坏,最显而易见的缺点就是中央服务器宕机一小时,那么在这一小时内,谁都无法提交更新,也就无法协同工作。如果中心数据库所在的磁盘发生损坏,又没有做恰当备份,毫无疑问,你将丢失所有数据。

1.3 分布式版本控制系统

        为了解决集中化的版本控制系统所出现的问题,于是分布式版本控制系统(DVCS)出现了。在这类系统中,客户端并不只是提取最新版本的文件快照,而是把代码仓库完整地镜像下来,包括完整的历史记录。这么一来,任何一处协同工作用的服务器发生故障,事后都可以用任何一个镜像出来的本地仓库看回复。因为每一次的克隆操作,实际上都是一次对代码仓库的完整备份。

 

        更进一步,许多这类系统都可以指定和若干不同的远端代码仓库进行交互。籍此,你就可以在同一个项目中,分别和不同工作小组的人相互协作。 你可以根据需要设定不同的协作流程,比如层次模型式的工作流,而这在以前的集中式系统中是无法实现的。

1.4什么是git

        Git与其他版本控制系统非常相似,但它在对信息的存储和认知方式上却有很大的差距。

1.4.1直接快照记录而非差异比较

        Git与其他版本控制系统的主要差别在与git对待数据的方式。从概念上来说,其他大部分系统以文件变更列表的方式。从概念上来说,其他大部分文件系统以文件变更列表的方式存储信息,这类系统将它们存储的信息看作是一组基本文件和每个文件随时间逐步积累的差异。(它们通常称作基于差异的版本控制)

        Git不按照以上的方式对待或保存数据。反之,git更像是把数据看作是对小型文件系统的一系列快照。在git中,每当你提交更新或保存项目状态时,它基本上就会对当时的全部文件创建一个快照并保存这个快照的索引。为了效率,如果文件没有修改,git不再重新存储该文件,而是只保留一个链接指向之前存储的文件。Git对待数据更像是一个快照流。

1.4.2近乎所有操作都是本地执行

        在 Git 中的绝大多数操作都只需要访问本地文件和资源,一般不需要来自网络上其它计算机的信息。

1.4.3 git保证完整性

        在git中,Git 中所有的数据在存储前都计算校验和,然后以校验和来引用。 这意味着不可能在 Git 不知情时更改任何文件内容或目录内容。 这个功能建构在 Git 底层,是构成 Git 哲学不可或缺的部分。 若你在传送过程中丢失信息或损坏文件,Git 就能发现。Git 用以计算校验和的机制叫做 SHA-1 散列(hash,哈希)。 这是一个由 40 个十六进制字符(0-9 和 a-f)组成的字符串,基于 Git 中文件的内容或目录结构计算出来。

1.4.4 git一般只添加数据

        你执行的 Git 操作,几乎只往 Git 数据库中 添加 数据。 你很难使用 Git 从数据库中删除数据,也就是说 Git 几乎不会执行任何可能导致文件不可恢复的操作。 同别的 VCS 一样,未提交更新时有可能丢失或弄乱修改的内容。但是一旦你提交快照到 Git 中, 就难以再丢失数据,特别是如果你定期的推送数据库到其它仓库的话。

1.4.5 三种状态

        Git有三种状态,你的文件可能处于其中之一:已提交(committed)、已修改(modified)和已暂存(staged)。

        ——已修改表示修改了文件,但是还没保存到数据库中。

        ——已暂存表示对一个已修改文件的当前版本做了标记,使之包含在下次提交的快照中

        ——已提交表示数据已经安全地保存在本地数据库中

        这会让我们的git拥有三个阶段:工作区、暂存区以及git目录。

基本的 Git 工作流程如下:

        1.在工作区中修改文件。

        2.将你想要下次提交的更改选择性地暂存,这样只会将更改的部分添加到暂存区。

        3.提交更新,找到暂存区的文件,将快照永久性存储到 Git 目录。

1.5起步-命令行

        只有在命令行模式下你才能执行 Git 的 所有 命令,而大多数的 GUI 软件只实现了 Git 所有功能的一个子集以降低操作难度。 如果你学会了在命令行下如何操作,那么你在操作 GUI 软件时应该也不会遇到什么困难,但是,反之则不成立。

标签:文件,Git,快照,版本控制,第一章,git,版本
来源: https://blog.csdn.net/weixin_51768320/article/details/122181537

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有