Git

1.课前简述

1.1Git简述

  • Git是一种分布式版本控制工具软件

工具软件:就是实现指定功能的软件,如下载软件迅雷,聊天软件QQ,微信,杀毒软件360等订单都是实现特定功能的软件。

集中式:将所有的业务功能都部署在一个服务器上面,优点是部署简单,不需要进行复杂的操作,缺点是不能容忍单点式的故障,随着业务的增加需要不断的购置大型的主机来解决问题。

分布式: 一个硬件或者软件的多个组件分布在不同的计算机或者服务器,彼此通过消息通信和协调。优点是不需要大型的计算机,能为公司节省成本,不需要董所有的业务。

  • git软件是 管理软件开发项目中的源代码文件的软件,是计算机行业 ISO20001企业开发流程认证中重要的一项。

把软件按照不同的模块,放在不同的文件夹里面不就可以了吗? 为什么还要用专门的软件来对源文件进行管理?

  • 为什么要学习Git软件

    主流开发中,都会使用GIt来对资源进行管理,如人力资源,代码资源,文档资源,这是项目交付的重要标志,所以我们需要使用专用的软件来对

    管理资源的这些软件统称为SCM软件(软件配置管理Software Configuration Management)

    软件配置管理(SCM)是指通过执行版本控制、变更控制的规程,以及使用合适的配置管理软件,来保证所有配置项的完整性和可跟踪性。配置管理是对工作成果的一种有效保护.

    健全的项目管理流程是衡量项目成功与否的重要的指标。

  • 为什么要学习Git软件

    vss:微软开发的,简称集中式版本控制系统,客户端访问中央服务器,同一时间只能有一个人操作服务器文件

    cvs: 老牌的版本控制软件,支持多人同时控制。

    上述的,集中式都存在资源集中等问题,现在都是使用分布式版本控制软件Git

  • Git的重要性

    因为软件的使用难度比较难, 我们需要使用很多命令来学习这个软件。

    1. 从个人角度:在做项目时,涉及到很多方法,很多行代码,如果一点点去改代码会很乱,不利于我们的开发和进度。每一个历史版本都被记录,可以回到某一个历史状态,接着在这个历史状态下进行修改。通俗来讲就是可以回退和撤销操作。
    2. 从团队合作角度:每一个都需要开发自己负责的功能,多个人在开发同一个项目时,需要操作同一个类,一般的服务器可能会直接覆盖,不利于团队开发。
    3. 从公司的角度来讲,GIt是ISO20001 企业开发流程认证中的重要的一项。

    主要是学习软件的功能和使用的流。不必要去深入的去了解其中的源码

1.2相关概念

  • 版本控制

    1. 软件版本:很多软件,依赖都有自己的版本,像jdk1.8,mysql8.0,idea2023,Nodejs1.8.

      软件的版本都是以数字命名的,版本名越靠后,软件的版本越新

    2. 文件版本;

      某些文件非常的重要,修改会出现问题,常规的操作就是复制三份副本。通常使用

      v1.2,来声明具体的文件版本。

      文件版本具有两个非常重要的功能,一是保存重要的历史记录,二是恢复数。

    在文件比较少,软件比较小的情况下,我们可以使用这种复制文件的形式。但是在文件量比较大的情况下这种就不适用了。

  • 版本控制软件的基础功能

    1. 保存和管理文件:(自动生成版本号)
    2. 提供客户端工具进行访问
    3. 提供不同版本文件的比对功能(通过软件自身来完成的)
  • 集中式版本控制

    将所有的资源都存储在一个中央服务器里面,每一个项目的开发者都能使用客户端来访问中央服务器中的资源库。

    如果开发人员想要修改中央服务器中的资源,首先就需要将中央服务器中的资源通过客户端下载到自己的电脑上,在本地的环境下进行修改,修改完成后通过客户端上传到中央服务器中。

    集中式的问题:

    1. 某用户修改资源后,上传到中央服务器。另外一个用户也修改这个文件,同样上传到中央服务器中。 这样的话后面上传的文件会覆盖前面的文件。(vss:)

      解决有两种方式。一种是锁定,一种是分配,某一个用户分配对应可改变的文件。

    2. 多用户对同一个服务器中的文件进行操作,如果服务器宕机了怎么办。

  • 分布式版本控制

    在本地有一个跟中央服务器一样的库或者服务器,本地的库和中央的库是一样的,用户通过客户端,操作本地的服务器。解决中间服务器宕机的问题。等中央服务器恢复了以后,本地的库和中央服务器做一个关联同步

    分布式的问题:依赖网络,对网络有要求

2.git软件的使用

2.1 git 的下载

git官网

git官网

git下载

git安装成功

gitHup

2.2gitHupDesk 的基本使用

克隆

git 是一个分布式的版本控制工具,资源是存在中央服务器的,把中央服务器的资源下载到本地的行为就叫做克隆。

第一选项是从远程服务器克隆一个项目

目前是没哟中央服务器

第三个选项是从本地创建一个本地仓库

第四个选项是从本地导入仓库到这个软件

  • githupDeskTop的基础的配置

基础配置

其他的功能菜单用到在讲

2.3GItHupDeskTop汉化

2.4 git的基础操作。

  • 新建本地仓库

    新建本地仓库

    新建本地仓库

  • 基本功能介绍

    git基本功能

    左上角的是代表本地仓库的一个状态

    左下角的是将本地仓库的文件提交到远程的仓库中

    右边的位置是将本地仓库的数据保存到远程仓库中

    git

    通过使用在资源管理器中打开就能看到git自动生成的配置文件

    git 的配置文件尽量不要去改。改了容易出问题

    和一份默认的文件

    新建仓库

    新建一个仓库后,我们就可以通过上面的切换仓库来选择新建的仓库

    guit

    通过下拉菜单的形式能够选择对应的仓科

    移除仓库

    通过选择移除仓库的,来移除仓库

    移除

    如果选择移除而不选择,从本地仓库中删除,我们本地的文件还是存在的。如果想要继续使用本地的仓库将本地的仓库拖拽到软件中就可以。

    如果选择删除本地的仓库就将本地的文件和软件中的文件都删除掉了。

2.5 通过软件来操作文件

  • 识别文件

    识别

    直接使用第三个选项,在资源管理器中打开。然后新建文件,例如txt文件,软件会自动识别当前新建的文件件中,并且加载到页面上。

    只要我们把文件放在仓库的创建文件中,软件就能自动识别,但是我们创建文件不等同于放到了本地仓库中,我们没办法对本地仓库进行管理和控制。也就是说我们没办法对git文件夹下面的文件做操作。

    我们改的只是本地的文件,而不是本地的仓库。仓库是由软件自己管理,我们没办法去管理本地的仓库。.git 文件夹下面的东西是用来管理和维护我们本地的仓库的。

    git

  • 本地文件和仓库

    操作文件:用户新建和操作的这些个文件。

    存储文件: .git 里面的文件

    软件具有比对文件的功能,比对文件是软件帮我们做的,用来比对用户的文件和仓库文件的区别。

    用户创建一个文件,这个文件在仓里面是没有的,所以软甲就自动的比对仓库文件和本地文件的区别,发现仓库没有这个文件,就需要把操作的文件放到仓库中,这个操作叫做提交。也就是软甲发现操作文件和仓库文件不一样把本地文件放到仓库文件的这么一个操作。

    提交

    git

    下面写上描述,然后点击commit 将本地的操作文件提交到本地的仓库中

    提交本地仓库

    提交以后发现软件上没有改变的文件了,主要原因就是我们在提交操作文件到本地的仓库中后,软件发现本地的操作文件和本地的仓库文件是一样的,一样的就自动的将本地记录 取消了。

    我们重修修改本地的操作文件后,本地的操作文件发生改变,但是本地的仓库文件并没有发生改变,如果这个时候我们想要将本地的操作文件和本地的仓库文件保持一致,我们只需要在进行一次提交就可以。

    commit

    提交一次就相当于将本地的文件在提交一份到本地的仓库,月就是说在我们本地的仓库中有 一个新的红色的文件,之前黑色的文件并没有被替换掉,而是这个红色的文件和黑色的文件的版本号是不一样的。

    这个时候我们本地的文件是红色的,本地仓库的最新的文件颜色也是红色的,并没有起冲突。

    历史记录

    我们能通过点击历史记录来查看我们从本地提交到仓库文件中的历史记录。

    版本号

    我们每次提交的时候都会产生一个由40位16进制的数字组成的版本号。这个版本号也叫提交号,通过这个版本号我们可以直接找到对应的文件。

  • 文件的删除

    我们删除掉本地的操作文件,软件在比对的过程中发现本地操作文件和本地的仓库文件是有问题的,所以也会有提示。

    文件删除

    文件删除

    本地操作文件删除后本地仓库的文件还没有删除,所以我们需要再次提交commit

    提交了以后,仓库产生一个新的版本号,并记录删除。

    这个时候我们本地和仓库是一致的,所以就不会再报记录。

2.6 多人协同

多个开发人员如何协同开发,不同的开发者开发不同的功能。

user

开发者每次完成以后都会进行一次提交,但是这个提交是没有规律和顺序的,这样就造成了版本库中的提交混乱。

不同的开发人员,在用到同一份文件的时候,多人提交会造成冲突,正常冲突是可以解决的,但是多次频繁的出现冲突就容易造成问题。

频繁的修改就会导致我们这个仓库变的越来越大,就会造成我们在比对仓库的时候效率变的越来越慢。

冲突

  • 解决冲突

    增加副本,不同开发者开发的功能都 有不同的副本,这样就意味着,不同的开发人员在不同的版本库进行操作

    分支

    功能是要合并在一起的

    分支操作

    这样还是会出现冲突,但是我们只需要解决一次操作就可以了。

2.7分支操作

在项目的开发中,大多数情况下项目经理都是只负责项目版本库的管理,而不进行开发,

版本库管理

版本库管理

  • 分支操作实际操作

    1. 创建一个分支

    分支仓库

    分支创建成功

    1. 主分支

    主分支

    创建分支

    创建分支

    创建分支

    切换分支就是点击对应的分支就可以了

    选择分支

    我们切换了分支以后,直接在对应的分支文件夹里面创建对应的文件,创建文件并修改文件就可以完成对当前分支的对应的操作

    软件

    打开软件以后就会发现,我们当前的这个库里面放的就是我们刚才新建的那个文件以及对应的内容

    xzyh
    在右下角写上描述信息,将本地操作文件提交到本地仓库中,这样的话就完成了从和本地文件到本地仓库的文件的合并(需要注意的是,提交的是当前的分支)

  • 创建分支总结

    分支操作是每个模块都是由一两个人单独的进行开发,多人之间进行一个协同开发。本小结主要学习的就是,如何创建分支,如何将本地文件提交到本地仓库中。

  • 合并分支

    合并分支

    选择main主分支,随后,点击最下面的合并分支。点击完成以后就成功了。

    合并分支

    合并分支的效果就是我们当前分支的文件会汇总到主分支中。

    主分支

  • 分支冲突问题

    如果两个分支 如 other 分支和 user分支都包含了一个1.txt的文件,那么在将other 分支合并到main 分支和 将user 分支合并到main分支上之后,就会造成文件的冲突,因为两个同一个文件。

    分支冲突

    这个时候就需要我们手动的去解决冲突

    解决冲突

    分支操作

    手动修改删除冲突的代码

    删除冲突代码

2.8给历史记录打Tag

查看历史操作

我们会进行很多次对分支文件的增删改查的操作,对文件增删改查以后,需要进行提交本地仓库,合并分支的操作,这个时候软件会给我们产生很多历史记录,这些历史记录名字并不是很好记,所以说我们可以手动的去更改这些记录的名称。

分支备注操作

分支备注

3. 中央服务器

在我们git中有本地的仓库同时也有远程的仓库,通常大公司会搭建自己的服务器,作为远程或者中央的仓库, 学习的时候我们可以借助第三方的工具或网站来搭建属于自己的远程仓库或者中央服务器

git

3.1注册githup网站及远程仓库的基本使用

注册git

我们登录gitHup仓库没有任何信息,所以说我们点击最右边的创建仓库

新建仓库\

新建仓库

创建文件

创建文件

创建文件2

提交文件

提交文件

提交完成了以后有提交码

提交完成

提交完成了以后会自动的生成一个提交码,这个提交码就相当于是版本号的概念

远程的仓库服务和本地的仓库服务是一样的,包括远程分支的创建,合并都是一样的

3.2 删除远程仓库

删除远程仓库

删除仓库

删除仓库

3.3远程仓库下载到本地(gitHup)

远程克隆本地

克隆远程仓库到本地

远程仓库

本地可操作文件

提交远程

远程仓库

3.4 本地同步远程仓库(gitee)

注册和登录gitee

刚登录状态

注册登录gitee

新建远程仓库

新建远程仓库

新建仓库

初始化仓库的状态

初始化仓库的状态

将gitee的仓库克隆到本地

gitee

填写对应的账号和密码

填写gitee账号密码

克隆成功

克隆成功

添加新文件

新文件新内容

提交 发布

gitee提交成功后的反应

gitee提交成功

3.5 细化补充

在之前的学习中已经能进行一些基础的文件的从本地可操作文件提交到本地仓库,将本地仓库的文件提交到远程的中央服务器中,同时能将中央服务器的内容克隆到本地。

但是有很多知识点都是需要我们在进行一个比较细化的操作的

  • readme文件

    readme

    README 文件主要放就是我们对这个项目的描述,在别人下载仓库的时候,通过这个readme文件来了解我们的项目。

    如果一个项目很长时间没有做改动了,突然让我们对这个项目进行操作,我们很难上手,所以git推荐我们使用readme文件来对项目进行描述

    eademe

  • 忽略文件 git ignore

    表述的是忽略的意思,git里面有非常多的文件,并不是所有的文件都是需要比对提交到远程仓库。

    像图片,压缩包,这种都是没办法进行比对的。所以说有很多文件都是没办法进行比对的,如代码文件,文本文件都是可以进行比对的。但是像副本文件,压缩包这种都是没比较保存到仓库中的。

    忽略文件

    选中文件以后配置为可忽略的文件

    忽略文件

    忽略某个类型的所有文件

    忽略文件

  • 文件的状态

    文件状态

    根据文件右边小图标的颜色来区分文件更改的一个状态

    红色的是删除文件

    黄色的是修改文件

    绿色的是新增文件

    工具提交的一些图标能帮助我们分辨文件的一个状态

  • 文件修改的那个乱码

    文件

    0 表示最开始这个文件里面没有内容,+1 表示我们在这个文件里面写了一行内容

    对比功能

    比对功能

3.6版本号

版本号

git软件会把我们每一次的提交都记录下来形成一个版本号,是由40位16进制组成的。

为什么和其他的版本号不一样 v1.2 v1.2

Git里面的版本号是通过SHA-1加密算法算出来的

git中有多个版本库,每一个版本库都有对应的版本号,这个是没有问题的,但是git软件可以把多个版本库合并到一个一个版本库中,如果有三个版本库都叫1.0 那么我们合并了以后的版本库到底叫什么,具体以哪个为准。

版本号

使用四十位版本号的版本库在合并的时候不会出现版本号冲突的问题

  • 版本号的作用—定位仓库文件

    2+38

    前两位用来定位文件夹,后面的三十八位用来定位文件