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

2023-12-05 15:15

本文主要是介绍分布式版本管理系统---->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"


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

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

        


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

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

这篇关于分布式版本管理系统---->Git(Linux---centos(保姆式)讲解1)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/458086

相关文章

Python使用国内镜像加速pip安装的方法讲解

《Python使用国内镜像加速pip安装的方法讲解》在Python开发中,pip是一个非常重要的工具,用于安装和管理Python的第三方库,然而,在国内使用pip安装依赖时,往往会因为网络问题而导致速... 目录一、pip 工具简介1. 什么是 pip?2. 什么是 -i 参数?二、国内镜像源的选择三、如何

Linux使用nload监控网络流量的方法

《Linux使用nload监控网络流量的方法》Linux中的nload命令是一个用于实时监控网络流量的工具,它提供了传入和传出流量的可视化表示,帮助用户一目了然地了解网络活动,本文给大家介绍了Linu... 目录简介安装示例用法基础用法指定网络接口限制显示特定流量类型指定刷新率设置流量速率的显示单位监控多个

ElasticSearch+Kibana通过Docker部署到Linux服务器中操作方法

《ElasticSearch+Kibana通过Docker部署到Linux服务器中操作方法》本文介绍了Elasticsearch的基本概念,包括文档和字段、索引和映射,还详细描述了如何通过Docker... 目录1、ElasticSearch概念2、ElasticSearch、Kibana和IK分词器部署

Linux流媒体服务器部署流程

《Linux流媒体服务器部署流程》文章详细介绍了流媒体服务器的部署步骤,包括更新系统、安装依赖组件、编译安装Nginx和RTMP模块、配置Nginx和FFmpeg,以及测试流媒体服务器的搭建... 目录流媒体服务器部署部署安装1.更新系统2.安装依赖组件3.解压4.编译安装(添加RTMP和openssl模块

linux下多个硬盘划分到同一挂载点问题

《linux下多个硬盘划分到同一挂载点问题》在Linux系统中,将多个硬盘划分到同一挂载点需要通过逻辑卷管理(LVM)来实现,首先,需要将物理存储设备(如硬盘分区)创建为物理卷,然后,将这些物理卷组成... 目录linux下多个硬盘划分到同一挂载点需要明确的几个概念硬盘插上默认的是非lvm总结Linux下多

Python itertools中accumulate函数用法及使用运用详细讲解

《Pythonitertools中accumulate函数用法及使用运用详细讲解》:本文主要介绍Python的itertools库中的accumulate函数,该函数可以计算累积和或通过指定函数... 目录1.1前言:1.2定义:1.3衍生用法:1.3Leetcode的实际运用:总结 1.1前言:本文将详

linux进程D状态的解决思路分享

《linux进程D状态的解决思路分享》在Linux系统中,进程在内核模式下等待I/O完成时会进入不间断睡眠状态(D状态),这种状态下,进程无法通过普通方式被杀死,本文通过实验模拟了这种状态,并分析了如... 目录1. 问题描述2. 问题分析3. 实验模拟3.1 使用losetup创建一个卷作为pv的磁盘3.

CentOS系统Maven安装教程分享

《CentOS系统Maven安装教程分享》本文介绍了如何在CentOS系统中安装Maven,并提供了一个简单的实际应用案例,安装Maven需要先安装Java和设置环境变量,Maven可以自动管理项目的... 目录准备工作下载并安装Maven常见问题及解决方法实际应用案例总结Maven是一个流行的项目管理工具

java中不同版本JSONObject区别小结

《java中不同版本JSONObject区别小结》本文主要介绍了java中不同版本JSONObject区别小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们... 目录1. FastjsON2. Jackson3. Gson4. org.json6. 总结在Jav

Linux环境变量&&进程地址空间详解

《Linux环境变量&&进程地址空间详解》本文介绍了Linux环境变量、命令行参数、进程地址空间以及Linux内核进程调度队列的相关知识,环境变量是系统运行环境的参数,命令行参数用于传递给程序的参数,... 目录一、初步认识环境变量1.1常见的环境变量1.2环境变量的基本概念二、命令行参数2.1通过命令编程