分布式版本管理系统---->Git(Linux---centos(保姆式)讲解1)

文章目录:

        1:什么是Git以及作用

        2.Git的基本操作过程(创建git仓库,配置仓库的配置)

        3.git的工作区,暂存区,版本库的关系

        4.将文件添加到版本库:git add 与git commit -m命令

        5.git log查看日志的引入

        6.查看.git文件中的内容

        7.修改文件内容查看 git diff 与git diff HEAD

        8.版本回退的概念引入以及命令

        9.撤销修改的引入与相关指令操作

        10.git rm 删除版本库文件


前言:

        本文章是讲解Git的相关操作的,深刻理解Git的操作过程与操作,掌握Git企业级的应用,从0开始讲解Git。

文章正式开始:

1:什么是Git 以及作用

        首先在讲解什么是Git之前我们先来聊一聊关于我们工作中的一个场景:

        我们日常在工作的时候我们的老板可能让我们写一个需求文档(文档1),而当我们写完文档1之后我们可能就将这个文档1交给老板,可是我们的老板对我们的文档1不是怎么很满意觉得我们的文档缺了一点什么,于是让我们将这个文档拿下去进行修改,于是我们就拿着文件去进行修改了,此时我们将文档2给修改出来了,又将这个文档交给老板,老板可能觉得还是对这个文件不是很满意,于是又让我们去修改文档.......,假设最终我们修改到了第10版文档,可是老板觉得我们的第5份文档是最满足他的需求的,于是我们就去寻找文档5,如果我们之前没保存文档5那我们的内心是非常崩溃的,因为我们已经修改文档很多次了并不知道文档5是什么内容了,但是我们如果修改的并不是同一份文件而是每次修改的时候都是新建一个副本文档进行修改,那么我们就开开心心的拿着第5份文档交给老板。

                从上面的工作场景不难发现我们修改文件的时候由两种方式一种是在同一份文件进行多次修改,另外一种情况就是对要修改文件的副本文件进行修改,显然第二种情况是比较好的修改方式,因为这种修改方式可以让我们找到我们每次修改文件的版本。

而为了对我们的文件进行管理于是就有了git这个主流的版本管理控制器之一。

所以我们可以将Git简单的理解为:对文件进行管理的版本控制系统,能够帮我们知道这个文件的各个版本以及里面的内容。这里的文件可以是任何格式的文件,而对于开发者来说git最大的作用就是用来管理我们的源代码的。

2:Git的基本操作(centos下的操作)

        1:首先在我们的centos系统下我们需要安装Git

        命令:

root用户:yum install -y git
普通用户:sudo  yum install -y git

      创建git仓库

      首先要注意的是我们的创建仓库一定是在一个目录下进行创建的

    

        创建一个git仓库:git init

        


        配置仓库

   

git config user.name "xxxxx" git config user.email "xxxxx" 

         

首先在配置名字和邮箱之前我们可以查看一下git有无配置这两个,如果配置了我们就可以不进行配置,一般而言如果我们是刚开始建立git仓库都需要进行配置。

查看git的配置项指令: git config -l

 

所以我们来配置name与email

        

  我们还可以加一个 --global的选项来进行配置这两个如:

        git config --global user.name "    "

        git config --global user.email "    "

是否加 --global看自己的意愿。


配置项的删除

        假设我们的配置项不小心配置错了或者我们需要对一个git仓库的配置项进行修改那么我们就可以使用以下的指令:

        git config  --unset user.name(user.email)  对于局部配置

        git config --global  --unset   user.name(user.email)  对于全局的配置

        


3:git的三大区域介绍

        其实我们的git真正管理的是位于版本库中的文件,但是在git仓库目录的文件还不能被git进行管理,而需将他添加到git的版本库中才能进行管理。

我们通过上面的图形来介绍几个概念

        工作区:.git文件的同级路径下的区域,简单的理解就是我们在写代码的区域。

        暂存区:属于.git版本库中一个非常重要的内容,我们将工作区的内容通过add指令之后文件就会被放在该区域。

       git的版本库:就是我们的.git目录。

        HEAD:本质是一个指针用来指向我们当前是在那个分支下。

        master:本质里面存的是commit id

        object对象库:当我们对工作区进行修改的时候,我们修改的内容会被存储在object对象库中。

        

.git文件中就有上述的一些区域。


4.git add  与git commit -m 

        在上面我们已经对于git的区域有一定的了解了,那么我们也就可以引入两个指令了。

        git add  .  or git add filename

        首先这个命令是针对于工作区与暂存区进行的命令。

        意义是:将我们工作区修改的内容添加到暂存区。

        “修改“:并不是局限于对文件的修改还包括删除和创建文件

        git add . 与git add filename的区别

        add .  :表示将工作区所有的修改添加到暂存区中。

        add filename: 将该文件的修改添加到暂存区中。

        如我们先使用上述命令来进行相关的操作:

        git status

        这个指令可以用来查看我们当前三个工作区的状态

         


        git commit -m  ” xxxx“    ”“分号里面建议认真的写本次做了什么操作

        git status 查看三个区域的状态 


5:git log  查看日志的指令

        这个指令可以用来查看我们提交到版本库中的日志

还可以使用 简单漂亮的打印指令

git log --pretty=oneline


6. .git文件里面的内容介绍

        .git其实是树目录里面有许多文件或目录,我们在linux下使用tree命令来查看

        index:也就是我们所说的暂存区,里面存着的是add 修改的内容

        HEAD:也就是我们所说的指针,里面存着的是我们指向的分支

        object:称为对象库,里面存着的是我们我们每次对工作区进行修改的内容的索引

        master:其实就是我们最新一次的commit id,我们可以来看看。


7.修改内容的查看

        我们知道git是版本控制管理系统,所以git最重要管理的是修改并非是文件

        我们先引入几个场景

        1.只是修改了文件的内容,无add。

        这种情况下我们git如果想要知道本次文件的内容上次该文件内容的差异我们呢一个如何进行查看呢?? 

       当然这种差异我们可能可以通过我们的记忆知道两个文件的区别,可是当我们时间一久那我们还会记住吗??

所以我们的git提供了一个指令用来显示工作区与暂存区的区别

        git diff filename

我们通过图片来进行演示。

        场景2:修改的文件已经add了,想要查看文件在暂存区与版本库中的差别

        git diff HEAD -- filename

        此时暂存区与版本库的差异就出来了。


8.版本回退

        我们知道我们的git有一个重要的功能就是对文件进行版本管理,所以版本回退是git的一个非常重要的知识。

        版本回退经常用于,我们假如已经开发了一段时间了,可是我们对我们的开发结果不是怎么很想要了,并且想要在上一个版本下重新进行开发,那么这时我们的版本回退的操作就非常需要了。

    版本回退语法:git reset  [--soft] [--mixed] [--hard]  commitid  [HEAD]

        commitid:就是我们用git log打印时commit 后面的那些数字,当然commitid 也可以是HEAD,表示的是当前版本

        回退的本质:将版本库的内容进行回退,其他区域回不回退需要看选项回退。 

        我们结合图来进行解释具体的选项的意思。

--soft:只回退版本库中的内容。

--mixed:版本库和暂存区都会回退,也是git reset的默认选项。

--hard:将所有区域的内容都进行回退,要慎用。


        此时假设我们已经开发了一次,备注了“coding x function”

        且文件中的内容为:

        我们不想要这一次的结果了,我们想回到上一个版本。

        此时就可以使用git提供的版本回退功能了。

此时的test的内容

这样就将工作区,暂存区,版本库中的内容全部回归到上一个版本了。

        从这里我们也能发现git的版本回退是非常快速的,这是因为回退其实就是将HEAD指针的master修改就行,所以修改速度非常快。


     git reflog 可以查看我们所有的commit id,这样导致了我们可以随便回归到那个版本。

        但是不建议随便乱回退,可能commit id会被冲掉。

        我们通过图来讲解git版本回退时本质的内容

        

        

9.撤销修改文件

         这里的撤销修改指的是我们在对一个文件进行操作的时候所对应的操作,也就是觉得我们本次开发的代码非常不好,想回到开始时候的状态。

        1:对工作区的代码的撤销,无add

                方法1:自己手动修改。这种方法太挫了,这里就不进行演示了。

                方法2:git checkout -- [filename],回到最近一次的add状态与commit状态。

            

                


        2.已经进行了 add 操作,但没有commit操作

        

        方法:git reset HEAD filename +git checkout -- [filename] 两步走

 


        3.已经add,已经commit了

        这时候的撤销我们只能依靠我们的git reset --hard/mixed/soft  commitid 了,版本回退。

        这里就不给大家进行演示了。


        10.删除版本库中的文件

        命令:git rm filename

                我们通过具体的实例来讲解git rm

        我们先创建file1,file2,file3,然后将他们删除。

        

 

        此时使用git status来进行查看内容

        我们在只需 git commit 操作就能将文件给彻底删除了。

        总结使用git rm删除版本库中的文件的两步: git rm filename +git commit -m " xxx"


        如何恢复我们在工作区所不小心删除的文件呢?

        这里就可以使用撤销操作了,因为删除本质上也是修改。

        


        本篇文章完!!!!感谢大家的耐心观看。

还有的内容将会在后面的文章中进行介绍,如果你觉得对你有用的话可以给个赞。

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

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

相关文章

15:00的面试,15:06就出来了,问的问题过于变态了。。。

从小厂出来,没想到在另一家公司又寄了。 到这家公司开始上班,加班是每天必不可少的,看在钱给的比较多的份上,就不太计较了。没想到5月一纸通知,所有人不准加班,加班费不仅没有了,薪资还要降40%…

L1-020:帅到没朋友

题目描述 当芸芸众生忙着在朋友圈中发照片的时候,总有一些人因为太帅而没有朋友。本题就要求你找出那些帅到没有朋友的人。 输入格式: 输入第一行给出一个正整数N(≤100),是已知朋友圈的个数;随后N行&#…

Java多线程详解(上)——2023/11/23

Process(进程)与Thread(线程) 说起进程,就不得不说下程序。程序是指令和数据的有序集合,其本身没有任何运行的含义,是一个静态的概念。而进程则是执行程序的一次执行过程,它是一个动…

基于微服务架构的外卖系统源码开发

在当前互联网时代,外卖行业蓬勃发展,用户对于高效、智能的外卖服务需求不断增加。为了满足这一需求,采用微服务架构的外卖系统成为了开发的主流方向。本文将探讨基于微服务的外卖系统源码开发,涉及到关键技术和示例代码。 1. 微…

伪原创软件盘点,文本处理事半功倍

在工作中,我们常常需要处理大量的文字信息,无论是写作、编辑还是其他文本相关的工作。有时候,为了提高效率,我们可能会需要一些伪原创软件,它们可以帮助我们巧妙地改写文本,使之保留原意的同时呈现出全新的…

Nacos前世今生、安装配置、服务注册源码、整合Springboot实战

一、前言 随着微服务架构的兴起,服务的规模不断增长,对于服务的发现、配置和管理变得越来越复杂。 在这个背景下,Nacos应运而生,以其强大的功能和灵活性成为云原生领域的瑞士军刀之一。 Nacos是一个由阿里巴巴开源的项目&#…

在Spring Cloud中使用组件Zuul网关,并注册到Eureka中去

在上一篇中,我们搭建了Spring Cloud的父子模块,并实现了一个Eureka子模块的启动,可以通过浏览器地址去访问Eureka主页了,相信了解过的童鞋应该看到,主页上并未有任何服务去注册,那么我们就在这篇&#xff0…

字节跳动开源基于SD1.5的 MagicAnimate 一张照片秒变真人舞蹈视频

从今天起,在社交平台上看到的小姐姐舞蹈短视频很可能就是AI生成的。字节跳动新开源基于SD1.5的MagicAnimate,它只需要一张照片和一组动作,就能生成近似真人的舞蹈视频。 项目地址:MagicAnimate使用入口地址 Ai模型最新工具和软件a…

linux部署前端页面(实战)

Linux基本命令(学习笔记)零基础入门linux系统运维_linux find exec rm_Z_Xshan的博客-CSDN博客 如果linux不熟可以看我之前写的入门教程 感谢支持!! 一、服务器 这里去购买云服务器,如果是练习可以用虚拟机&#xff…

一文看懂 Linux 内核,清晰明了

Linux内核预备工作 理解Linux内核最好预备的知识点:懂C语言 懂一点操作系统的知识 熟悉少量相关算法 懂计算机体系结构 Linux内核的特点: 结合了 unix 操作系统的一些基础概念。 Linux内核的任务: 1. 从技术层面讲,内核是硬…

ESP32 LVGL Gui-Guider的移植

使用参考: ESP32系列之LVGL(三):Gui-Guider的使用_esp32 lvgl-CSDN博客 1、拷贝文件: 按照上面的文章,使用Gui-Guider软件生成C代码之后,custom和generated是我们要使用到的文件,…

阿里云服务器租赁价格表,预算100元到5000元可选配置

阿里云服务器租用费用,阿里云轻量应用服务器2核2G3M带宽轻量服务器一年87元,2核4G4M带宽轻量服务器一年165元12个月,ECS云服务器e系列2核2G配置3M固定带宽99元一年、2核4G配置365元一年、2核8G配置522元一年,阿里云u1服务器2核4G、…

成为Java开发高手:掌握Spring框架的关键技能-DI

DI相关内容 1.1 setter注入1.1.2 注入引用数据类型1.1.3 注入简单数据类型步骤1:声明属性并提供setter方法步骤2:配置文件中进行注入配置步骤3:运行程序 1.2 构造器注入1.2.2 构造器注入引用数据类型步骤1:删除setter方法并提供构造方法步骤2:配置文件中进行配置构造方式注入步…

最优化理论复习--凸集与凸函数

文章目录 基本概念凸集凸函数下一篇 基本概念 可行点(可行解):在规划问题中,满足约束条件的点可行集或可行域:全体可行点组成的集合无约束问题:如果一个问题的可行集是整个空间。 分为三种情况&#xff1…

甘草书店记:6# 2023年10月31日 星期二 「梦想从来不是一夜之间实现的」

甘草书店 今天收到甘草书店第二版装修设计平面图,与理想空间越来越近。 于我而言,每一次世俗意义上所谓的成功都不如文艺作品中表现的那样让人欢腾雀跃。当你用尽120分努力,达到了冲刺满分的实力时,得个优秀的成绩也并不意外。 …

华为云obs在java中的使用

1、申请obs服务。 申请完成后,会获得以下几个配置信息: AK"****************************"; SK"******************************************************"; ENDPOINT"obs.*************************"; BUCKET_NAME&q…

二维码智慧门牌管理系统升级解决方案:优化制牌存疑管理

文章目录 前言一、解决方案关键特点二、解决方案的优势 前言 二维码智慧门牌管理系统在城市管理中发挥着重要作用,然而,制牌审核过程中遇到存疑地址数据是常见问题,需要更有效的处理方法。为此,我们提出了二维码智慧门牌管理系统…

Swift 如何实现自定义 Tab Bar

前言 每个 UI 设计师都喜欢美丽而有动画效果的 Tab Bar。然而,对于开发人员来说,实现这种设计可能是一场噩梦。当然,使用 Apple 的原生 Tab Bar 组件并专注于更有趣的事情,比如业务逻辑的实现,会更容易。但如果我们必…

用金鸣识别实现纸质合同转word的几个解决方案

合同是我们日常生活和工作中经常碰到的文件类型,如果您需要将纸合同转为可编辑的Word文档怎么办呢? 如果是一般无表格的合同比较好处理,一般的OCR软件都能应付,只是识别率高低的问题(好的OCR识别率高,后期…

用js自定义一个(v-model)vModel双向绑定函数

vue中的v-model是双向绑定的, 我们自己用JavaScript实现一个双向绑定vModel函数。 // element 元素或者#id,.class,div 得是input标签 // data 对象 // 将要绑定property 对象中的key<input class"vmodel"/>function vModel(element, data, property) {if (…