分布式版本管理系统---->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"


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

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

        


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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

图扑数字孪生压缩空气储能管控平台

压缩空气储能在解决可再生能源不稳定性和提供可靠能源供应方面具有重要的优势。压缩空气储能,是指在电网负荷低谷期将电能用于压缩空气,在电网负荷高峰期释放压缩空气推动汽轮机发电的储能方式。通过提高能量转换效率、增加储能密度、快速启动和调节能力…

探索什么样的导线,适合做433的天线

​​​​​​一、理论基础 (3 封私信 / 18 条消息) 为什么天线的材质会影响接收电磁波的效果? - 知乎 (zhihu.com) 电感基础3——RLC电路,帮助你轻松理解“阻抗”的概念 - 知乎 (zhihu.com) 一文读懂介电性能---介电常数 - 知乎 (zhihu.com) 433MHz 至…

亚马逊,shopee,lazada自养号测评补单,保护店铺信誉提升自然流量

测评补单对跨境电商卖家来说,是运营店铺的重要手段之一。一个产品想要有更好的曝光、更高的转化率,需要有一个好的Listing排名。Review在各平台Listing中占据着较高的权重,一个好的Review能给用户带来良好的观感,使用户对产品的信…

【EI会议征稿】第五届人工智能、网络与信息技术国际学术会议(AINIT 2024)

第五届人工智能、网络与信息技术国际学术会议(AINIT 2024) 第五届人工智能、网络与信息技术国际学术会议(AINIT 2024)将于2024年3月22-24日在中国南京举行。本届会议将主要关注人工智能、网络与信息技术面临的新的挑战问题和研究…

使用 kubeadm 部署 Kubernetes 集群(三)kubeadm 初始化 k8s 证书过期解决方案

一、延长k8s证书时间 查看 apiserver 证书有效时间:默认是一年的有效期 [rootxuegod63 ~]# openssl x509 -in /etc/kubernetes/pki/apiserver.crt -noout -text |grep Not 延长证书过期时间 1.把 update-kubeadm-cert.sh 文件上传到 xuegod63 节点 vim update-…

写给初学者的 HarmonyOS 教程 -- 页面路由(router)

页面路由(router)是指在应用程序中实现不同页面之间的跳转和数据传递。 HarmonyOS 提供了 Router 模块,通过不同的 url 地址,可以方便地进行页面路由,轻松地访问不同的页面。 类似这样的效果: 页面跳转是…

代理服务器如何保护用户隐私和安全?

目录 前言 一、代理服务器的工作原理 二、代理服务器的隐私保护机制 1. IP地址隐藏 2. 安全加密 3. 访问控制 三、代理服务器的安全问题 1. 黑客攻击 2. 版本漏洞 3. 恶意软件 四、总结 前言 代理服务器是一种位于用户与服务器之间的中介,可以隐藏用户的…

VSCode 配置JavaScript环境

首先下载node.js,我的电脑是Windows10版本 之后安装node 在这里插入图片描述 安装成功 如果发现运行的时候还是报错,则添加环境变量试试 在Windows10版本的搜索框,搜索环境变量,点击 D:\Program Files\nodejs\ %NODE_HOME…

并行流(Parallel Streams)

并行流(Parallel Streams)是Java 8引入的一种并行处理集合数据的机制,它允许将操作并行化以提高处理速度。然而,并行流可能存在一些安全问题,特别是在多线程环境下。 以下是一些与并行流相关的安全问题: 共…

实现简单的Http服务器+SpringMvc,集成到Spring

实现简单的Http服务器SpringMvc,集成到Spring 1、Http协议 1.1、HTTP 协议请求格式 方法 空格 URL 空格 版本 回车符 换行符头部域名称:头部域值 回车符 换行符...头部域名称:头部域值 回车符 …

【部署】Deploying Trino on linux

文章目录 一. Requirements1. Linux operating system2. Java 环境3. Python 二. Installing Trino三. Configuring Trino1. 节点配置2. JVM 配置3. Config properties4. Log levels5. Catalog properties 四. Running Trino 一. Requirements 1. Linux operating system 64位…

鸿蒙Harmony开发初探

一、背景 9月25日华为秋季全场景新品发布会,余承东宣布鸿蒙HarmonyOS NEXT蓄势待发,不再支持安卓应用。网易有道、同程旅行、美团、国航、阿里等公司先后宣布启动鸿蒙原生应用开发工作。 二、鸿蒙Next介绍 HarmonyOS是一款面向万物互联,全…

查询绑定了所有id的name

1、如图,绑定了所有id的有A,B两个name 2、第一种Sql及效率 explain SELECT name,count(id) as count from test GROUP BY name HAVING count(id)(SELECT count(DISTINCT id) from test); 3、第二种sql及效率 explain select * from (SELECT name,count(id) as co…

软著项目推荐 深度学习的智能中文对话问答机器人

文章目录 0 简介1 项目架构2 项目的主要过程2.1 数据清洗、预处理2.2 分桶2.3 训练 3 项目的整体结构4 重要的API4.1 LSTM cells部分:4.2 损失函数:4.3 搭建seq2seq框架:4.4 测试部分:4.5 评价NLP测试效果:4.6 梯度截断…

柔性线路板市场分析:预计2028年将达到221亿美元

柔性电路板又称“软板”,是用柔性的绝缘基材制成的印刷电路。柔性电路提供优良的电性能,能满足更小型和更高密度安装的设计需要,也有助于减少组装工序和增强可靠性。柔性电路板是满足电子产品小型化和移动要求的惟一解决方法。可以自由弯曲、…

360公司-2019校招笔试-Windows开发工程师客观题合集解析

360公司-2019校招笔试-Windows开发工程师客观题合集 API无法实现进程间数据的相互传递是PostMessage2.以下代码执行后,it的数据为(异常) std::list<int> temp; std::list<int>::iterator it = temp.begin(); it = --it; 3.API在失败时的返回值跟其他不一样是 …

会话 cookie 及隐私的那些事

什么是会话 Cookie? 会话 Cookie 的概念非常简单。 会话 Cookie,也称为临时 Cookie 或内存 Cookie,是网站在浏览会话期间存储在用户计算机或设备上的小数据片段。 它是由网站生成并由您的浏览器存储和使用的多种 Cookie 之一。 常规 Cookie 或“持久”Cookie 是通常在您的…

Ant Design Vue 年选择器

文章目录 参考文档效果展示实现过程 参考文档 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; DatePicker 日期选择框 大佬&#xff1a;搬砖小匠&#xff08;Ant Design vue 只选择年&#xff09; 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案…

Django宠物之家平台

摘 要 随着互联网的快速发展&#xff0c;利用网络的管理系统也逐渐发展起来。在线管理模式快速融入了众多用户的眼球&#xff0c;从而产生了各种各样的平台管理系统。 关于本django宠物的家庭平台管理系统的设计来说&#xff0c;系统开发主要采纳Python技术、B/S框架&#xff…

几何对象的凸点集

// 引入VTK并初始化 #include "vtkAutoInit.h" VTK_MODULE_INIT(vtkRenderingOpenGL2); VTK_MODULE_INIT(vtkInteractionStyle);#include <vtkActor.h> #include <vtkCamera.h> #include <vtkConvexPointSet.h> #include <vtkDataSetMapper.h&g…