首页 > 其他分享 >Git版本控制系统是什么?

Git版本控制系统是什么?

时间:2022-12-12 21:07:36浏览次数:56  
标签:文件 HEAD git 控制系统 Git 版本 暂存区


Git是一个免费的、开源的分布式版本控制系统,可以用于记录一个或者若干个文件内容的变化,方便查阅或者修改。

Git官网:https://git-scm.com/


1、常见的版本控制系统

1.1、集中式版本控制系统(SVN、CVS、perforce)

集中式版本控制系统的示意图如下:

Git版本控制系统是什么?_git

特点:

1)一定会有一个中央服务器;

2)优点在于所有用户都可以看到最新更新的文件或者记录,管理员也很方便掌握每个人的权限;

3)缺点是如果中央服务器出故障的时候,所有用户都不能进行上传、下载、更新等;


1.2、分布式版本控制系统(Git、BitKeeper)

分布式版本控制系统的示意图如下:

Git版本控制系统是什么?_git_02

每个客户端都有备份和记录,大家都可以查看到版本记录和修改以后的记录。

分布式版本控制系统存放的不是版本与版本之间的差异,而是版本的索引。



2、Git的工作区、暂存区、版本库

使用Git时对其工作区、暂存区和版本库这三个的概念是很有必要了解的,了解这三个概念有助于对Git的工作过程有一个比较明确的认知。

那这三个概念都是些什么意思呢?

1)工作区:

就是在电脑上能看到的目录或者文件。简单而言就是你的本地文件。

2)暂存区(stage 或 index):

一般存放在 .git 目录下的 index 文件(.git/index)中,所以也可以把暂存区叫作索引(index)。

3)版本库:

工作区中有一个隐藏目录.git,这个不算工作区,而是 Git 的版本库。


工作区、版本库中的暂存区和版本库之间的关系如下图所示:

Git版本控制系统是什么?_git_03

上图中左侧为工作区,右侧为版本库。在版本库中标记为 "index" 的区域是暂存区(stage/index),标记为 "master" 的是 master 分支所代表的目录树。

上图中可以看到,此时 "HEAD" 实际是指向 master 分支的一个"指针"。所以图中的命令中出现 HEAD 的地方是可以用 master 来替换。

上图中的 objects 标识的区域为 Git 的对象库,位于 ".git/objects" 目录下,里面包含了创建的各种对象及内容。

2.1、一些指令执行时所存在的关联

2.1.1、向暂存区追加文件。

git add xxx

使用 git add 命令时,是对工作区修改(或新增)的文件进行操作的,会将暂存区的目录树更新。

同时,工作区修改(或新增)的文件内容会被写入到对象库中的一个新的对象中,而该对象的ID被记录在暂存区的文件索引中。


2.1.2、暂存区文件上传版本库。

git commit -m "描述"

当执行提交操作 git commit 时,会将暂存区的目录树写到版本库中,master 分支会做相应的更新。即 master 指向的目录树就是提交时暂存区的目录树。


2.1.3、版本回退。

git reset HEAD

当执行 git reset HEAD 命令时,暂存区的目录树会被重写,被 master 分支指向的目录树所替换,但是工作区不受影响。


2.1.4、删除文件。

git rm --cached <file>

当执行 git rm --cached  命令时,会直接从暂存区删除文件,工作区则不做出改变。


2.1.5、检出文件

git checkout .  或  git checkout -- <file>

当执行 git checkout . 会用暂存区全部的文件替换工作区的文件。或者 git checkout --  命令时,会用暂存区指定的文件替换工作区的文件。这个操作是很危险,会清除工作区中未添加到暂存区的改动。

git checkout HEAD . 或者  git checkout HEAD <file>

当执行 git checkout HEAD . 会用 HEAD 指向的 master 分支中的全部文件替换暂存区和以及工作区中的文件。或者 git checkout HEAD  命令时,会用 HEAD 指向的 master 分支中的部分文件替换暂存区和以及工作区中的文件。这个命令也是极具危险性的,因为不但会清除工作区中未提交的改动,也会清除暂存区中未提交的改动。


3、代码托管中心

除了本地库可以保存版本的信息以外,为了更加方便使用,可以在代码托管平台中创建远程库,将本地库和远程库建立连接,实现远程协同的开发。它的好处有:

1)方便团队内部合作开发项目、共同项目管理;

2)方便跨团队之间的项目开发合作,使得不同公司、组织之间的合作开发可以方便的进行。



4、Git的工作流程

Git的工作流程可以归纳如下图所示:

Git版本控制系统是什么?_git_04

总的来说:Git是一个很方便的代码托管平台,使用者可以在远程服务器上建立属于自己的项目资源管理库,实现远程和本地的资源同步,本地添加、修改的文件可以及时更新到远程服务器上保存管理。同时也可以便利于多人协作开发,及时更新最新的资源库文件当本地的工作区,及时知晓最新的更新进度,加快开发的进度。

Git版本控制系统是什么?_git_05

标签:文件,HEAD,git,控制系统,Git,版本,暂存区
From: https://blog.51cto.com/wangjunlv/5931722

相关文章

  • win11上同时安装多个版本的python
    最近在做车牌识别项目,我的电脑上安装的python3.8+tensorflow2.x,但是网上的很多项目需要python3.6+tensorflow1.15.2,所以我就开始折腾怎么在电脑上同时共存多个python版本,在......
  • GitHub前50名的Objective-C动画相关库相关推荐,请自行研究
    GitHub的Objective-C的动画UI库其实是最多的一部分,GitHub有相当一部分的动画大牛,如JonathanGeorge,NickLockwood,Kevin,RomanEfimov,ChristopherWendel,JaredVerdi,PeterSte......
  • 通过命令上传到GitHub
    从零开始命令行上传代码到GitHub前情概要:​ 要提交代码到GitHub上,本来想要通过idea上传代码,然后去网上搜索了相关的文章,按照步骤一步一步的操作,结果还是没有弄好,也会出现......
  • [assembly: AssemblyVersion("1.0.1.*")] 指定版本字符串不符合所需格式 - major[.min
    [assembly:AssemblyVersion("1.0.1.*")]指定版本字符串不符合所需格式-major[.minor[.build[.revision]]]...报如下错误,解决方法:打开项目文件,修改 打开项目文件......
  • SpringBoot+Vue实现第三方Gitee登录(二)
    1.准备工作_OAuth2(官网地址:开发流程)1.1 API使用条款  1.OSCHINA用户是资源的拥有者,需尊重和保护用户的权益。  2.不能在应用中使用OSCHINA的名称。  3.......
  • IDEA集成Git
    1.新建项目,绑定git随便新建一个项目,将刚才在Git拉下来的项目文件,全部copy到创建的项目文件中   刷新IDEA:2.修改文件,使用IDEA操作Git   add之后变成绿色,然......
  • 【HMS Core】Push Kit推送是否支持多版本统一发送
    【问题描述】如果应用同时包含鸿蒙版,安卓版,苹果版,那么,这个推送是否支持一个请求同时推这三种。【问题分析】1、推送接口中需要设置appid,而每个应用都有不同的appid,token也是......
  • 【HMS Core】Push Kit推送是否支持多版本统一发送
    【问题描述】如果应用同时包含鸿蒙版,安卓版,苹果版,那么,这个推送是否支持一个请求同时推这三种。 【问题分析】1、推送接口中需要设置appid,而每个应用都有不同的appid,to......
  • 版本号自动生成,获得Assembly版本号
    usingSystem.Reflection;获得AssemblyInfo.cs中指定的版本号Assemblya=Assembly.GetAssembly(typeof(Try));AssemblyNamename=a.GetName();Console.WriteLine(name......
  • git emoji表情合集
    gitemoji表情合集gticommit中可以使用的emoji表情合集摘自:https://fsymbols.com/图标代码解释......