【Linux】Git超详细教程:手把手教你(gitee版)--版本管理+远程仓库克隆(初学者必看!!!)

目录

一、前言

 二、git 的深度理解

🥝 什么是 git ? 

🍇 git 的历史发展(理解 git 的由来)

🍋 感性理解 git 的版本管理

 三、git 的安装

✨Window 终端安装 

✨Linux 安装

 四、git 的工作流程

 五、如何在 Linux 上使用 git (重点!!)

1、创建仓库

2、将仓库克隆到本地

3、git 提交的三板斧

① git add 

② git commit

③ git push

 4、有关git的其他指令

 5、删除 gitee 中的仓库

 六、总结与提炼

 七、共勉


一、前言

        本文来为读者介绍一下分布式版本控制工具Git,可能你听说过 GitHub / Gitee,里面都带有 git 的字样,那它们和 Git 之间有什么关联呢❓ Git又是何物,让我们一起走进本文的学习📖

 二、git 的深度理解

🥝 什么是 git ? 

        Git 是一种分布式版本控制工具,它可以记录文件的-----改动历史,并且可以多人协同开发。Git最初由LinusTorvalds开发,用于管理Linux内核的开发。Git-----的工作方式是将代码库完整地复制到每个开发者的本地,这样每个人都可以在本地进行修改和提交,然后再将修改推送到主代码库中。Git还提供了分支管理、标签管理、代码合并等功能,非常适合大型项目的开发。

     如何大家还是觉得,Git 不太好理解,可以继续看看下面的,发展历史版本控制的感性理解,相信大家看了下面的解析,一定会对 git 有一个新的认识!

🍇 git 的历史发展(理解 git 的由来)

 首先我们要说说Git这个东西是怎么来的,是谁发明创造了它,为什么要创造它?

  • 对于Git的创建者,就是下面这个“小伙子”,它叫做【Linus Torvalds】,被称做Linux之父、Linux内核的发明人及该计划的合作者

  •  他在开创 Linux系统 的时候,开发了一段时间后便将他的代码开源出来,使得全世界的顶级黑客、工程师可以一起参与到Linux的开发与制作中来,所以每天都会有很多人给他发代码,那么他只能复制粘贴,这显得很烦很累,于是他便想到有没有这么一款版本控制和多人协作的软件呢,这样可以提高我们的开发效率❓
  •  于是他找到了这么一款软件叫做【BitKeeper】,不过呢它是收费的,就很难受。这件商业公司的老板就找到【Linus Torvalds】觉得很欣赏他,于是就免费提供给他的社区使用,于是大家就使用它进行了高效地开发

  • 但是呢,那些世界级的顶级黑客、工程师充满着好奇心,就想要去破解一下这块软件。于是有一天,一个小白工程师在完成了某项破解工作后将他的成果发布到社区中,就被这家公司的人看到了,于是老板很愤怒(我给你免费使用,但你来搞我?),于是就不给他们免费用了
  • 那此时【Linus Torvalds】就又开始了他的Ctrl + c/v。。。直到有一天终于受不了了,便自己用了两三周的时间开发出了一款版本控制和多人协作的软件,它就是 —— git。直到现今的代码托管平台【Gitee】【GitHub】都是基于它实现的

 Git 也因为其精简的设计、易于学习、占地面积小、性能快等一些系列优点深受程序员喜爱

🍋 感性理解 git 的版本管理

      接下去我们来聊聊有关Git的版本管理。其实对于Git还有很多其他的功能,像分支管理、版本管理、版本回退、项目发布等等,这些功能可以支撑我们进行多人协作

       因为对于Git的版本管理这一块挺难理解的,所以我会通过一个小案例来帮助大家理解,那就是我们大学生都要写的一样东西 —— 实验报告

  • 我们来讲一个例子,在学校里,老师要让小明去写一份报告,小明是一个非常认真工作的学生,于是小明回到家后就开始写报告,写好了一份报告,却发现好像有些地方不太好,但对于原报告又不想删掉,说不定哪一天可以用得着呢,于是,小明就在第一份报告的基础上继续更改,第二个版本的报告完成了,但细心的小明发现不行,还得改,于是,就又写了版本3,版本4.....

于是就造成了以下这个局面: 

  •  【痛苦面具1】当小明想要找回之前修改的某个报告时,却【找不到了】,是不是及其【痛苦】。
  •  【痛苦面具2】:更要命的是,有些部分需要小明的同学帮助填写,于是小明把文件通过【微信】发送给他,然后,小明继续修改Word文件。一天后,同学再把Word文件传给小明,此时,小明需再想想,发给同事之后到收到他的文件期间,小明作了【哪些改动】,得把小明的改动和同事的部分【合并】,真困难。

 救星登场

  •  如果有一个软件,不但能自动帮我记录每次文件的改动,还可以让同学协作编辑,这样就不用自己管理一堆类似的文件了,也不需要把文件传来传去。如果想查看某次改动,只需要在软件里瞄一眼就可以,岂不是很方便?

 这个软件用起来就应该像这个样子,能记录每次文件的改动:

 而这个就是我们的版本控制系统!

 故事讲完了,这其实就是Git发明者故事,它知道了Linux之父发明了Git,于是便在它的基础上实现更趋向于大众化、专业化的成就,使得大家也可以使用它来进行版本的管理

 三、git 的安装

 git 的安装分为两种,一种是在 Window 终端进行安装,一种实在 Linux 上面安装

✨Window 终端安装 

 1. 下载 git 安装包 :git 安装包下载地址

  •  按照自己的需求,进行选择即可

  •  鼠标右键,出现git相关功能或者Windows菜单栏出现git文件夹即安装成功

  •  可以正常进入终端

 ✨Linux 安装

 第 ①  种方法:切换至 root 用户身份,输入指令:

 yum install -y git

第 ②  种方法:使用 sudo 指令; 

 sudo yum install -y git

 安装好之后,记得检查是否安装成功

 四、git 的工作流程

⚡说明:
远程仓库 ——> 本地仓库 ——> 暂存区 ——> 工作目录:文件可以依次“检出”,也可以直接从远程仓库“检出”到工作目录

工作目录 ——> 暂存区 ——> 本地仓库 ——> 远程仓库:文件必须一步一步的提交

 五、如何在 Linux 上使用 git (重点!!)

 我这里以Gitee为例为大家演示一下如果将自己的代码上传进行托管

1、创建仓库

  • 通过上面的一系列操作将仓库创建好之后我们就可以将其拷贝到我们的本地仓库中了点击【克隆/下载】中的复制即可,通过HTTPS的形式将仓库的页面地址拷贝下来

 2、将仓库克隆到本地

  • 然后我们来到Xshell中的命令行使用git clone + 仓库页面地址,这样就可以将远端仓库中的内容全部克隆过来,此时我们本地也相当于是拥有了这个【GitTest】的仓库

  • 此时我们去【ls】一下就可以发现

  • 那这时候就有同学说了,我把仓库克隆下来了,那么这个仓库在哪里呢?它长什么样?
  • 此时我们只需在在这个git-test中执行一下【ls -la】即可,-l代表以列表的形式呈现当前目录下的内容;-a表示会显示隐藏的文件,也就是以.开头的文件
  • 那么我们就可以看到有一个【.git】的东西被显示出来,其实它就是我们从远端克隆下来的那个仓库,其实通俗点说它就是一个【目录/文件夹】

 3、git 提交的三板斧

 仓库克隆到本地之后,我们就可以将自己的代码托管到这个仓库中了

① git add 

 首先进行的就是【add】,也就是将当前目录下所有文件添加到暂存区(Stage)

 ② git commit

  •  接下去进行的就是【commit】,是提交的意思。是什么提交呢?是真正的提交。把我们修改的内容(暂存区)提交到本地仓库
  • 语法格式:git commit -m "日志"

  • 不过可以看到,似乎并没有提交成功的感觉,而是报出了一些异常的错误
  • 因为这是我们第一次提交内容到Gitee仓库中,但是人家还不认识你,也不会让你随便提交什么东西。所以只需要配置一下我们每次提交的【邮箱】和【用户名】即可

  • 然后我们再去【commit】一下就可以看到这两个文件就被提交到了本地仓库

 那有同学问,那我要怎么查看我确实是将这些东西提交到仓库中了呢🧐
⭐:git log ----> 查看日志
⭐:git status -----> 查看当前状态

温馨提示:【日志】不要随便乱写,要写你本次修改了什么内容 

🎯对于日志来说,是很重要的,因为记录了你本次修改仓库中的什么内容,方便以后可以快速查询到修改的时间和位置

🎯你之后在公司里写好代码后进行上传也是一样的,对于日志而言要好好写,因为之后可能你的领导会看你的代码、你的同事可能会看你的代码、你们公司的实习生也有可能会看到你的戴代码。此时他们就可以通过查看Gitee上面的提交记录或者是直接git log一下就可以搜索到你之前提交的记录,这个只要写了是无法修改的,所以我们对于每一次的代码修改都要认真记录日志

 ③ git push

 最后要进行的就是【push】,为何要push呢,其实也就是将本地仓库中保存的内容推送到远程仓库,让本地仓库和远端仓库保持一致

  • 刚才说到过,对于本地的仓库虽然可以起到一个永久的保存,但是难免会出现突发事故导致本地机器故障,此时就找不到之前写的代码了【当然你也可以使用U盘保存,不过U盘也是有使用年限的,不可以一直用过去】
  • 但是对虚拟的云端就会一直存在,不会丢失,所以我们可以将本地仓库中的内容进行一个推送

  • 不过若是你第一次进行git push的话,就出现上面这样的警告提示这点的话是由于git push没有指定分支,只有当前分支会被 push 到你使用 git pull 获取的代码。
  • 此时运行一下上面我框出的两句git config –global push.default matching 或: git config –global push.default simple。之后再去【git push】的时候就不会出现类似的问题了 
  • 然后我们再去【git push】一下就可以发现不会出现像刚才那样的问题了,那也就推送成功了( •̀ ω •́ )

  • 通过来到Gitee上的远程仓库中可以看到我们刚才从本地仓库【push】上来的内容,这也就实现了本地仓库和远端仓库保持一致

 4、有关git的其他指令

 讲完了基本的git三板斧后,我们再来说说有关Linux下git的其他指令操作

  • 删除仓库中的文件 —— git rm 文件名
  •  查看本地和远端之间同步的状态 —— git status
  •  删除本地仓库 —— git .git rm

  • 首先我们来看看如何去删除仓库中的文件

  • 在删除掉这个文件之后我们再来看看这个本地仓库和远程仓库的状态


  • 所有的操作都展示完了,我们就将这个本地仓库删除吧!
  • 可以看到,在删除完后再去git status查看状态的话就会检测出来本地的并不是一个git仓库(repository)

 5、删除 gitee 中的仓库

首先点击【管理】

  • 根据提示操作即可,输入内容

  • 最后再进行一下密码验证就可以删除成功了

  • 此时返回Gitee的大厅就可以看到我们删除仓库的记录了

 六、总结与提炼

 最后来总结一下本文所学习的内容

  • 首先我们介绍了有关【git】的相关知识,知道了它是由Linux之父【Linus Torvalds】在迫于某些需求的时候创建的,git是一款版本控制和多人协作的软件
  • 然后我们便说到了有关git的【版本控制】,因为网上大多数的文章都讲解了非常深奥难懂,于是我就使用到一些生活中的小案例来帮助大家理解,不过可不要真的和产品经理吵架哦,那就会很麻烦了~
  • 最后呢我们就说到了如何在Linux上去使用git,教了大家如何在Gitee上创建仓库并且将仓库克隆到本地。然后就可以使用git三板斧将本地的代码/文件托管到本地仓库进行管理了,但是本地仓库可能会存在风险,所以我们就可以使用第三板斧【push】将本地仓库中的内容推送到远端仓库,实现了一个云端备份

 七、共勉

         以下就是我对 Git 版本控制 + 远程仓库 的理解,如果有不懂和发现问题的小伙伴,请在评论区说出来哦,同时我还会继续更新对  Git  的理解,请持续关注我哦!!!!!    

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

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

相关文章

音视频开发—视频相关概念:YUV与RGB

文章目录 YUV相关概念组成部分优点常见的 YUV 格式数据量的计算YUV4:2:0 存储格式平面模式(planar):打包模式(packed) RGB 和 YUV 的定义关系与转换RGB 到 YUV 的转换YUV 到 RGB 的转换 使用场景优缺点 YUV相关概念 YUV 是一种颜色编码格式&…

JVM-JAVA-类加载过程

JVM源码 类加载到 JVM 的过程通过 java 命令执行代码的流程 类加载到 JVM 的过程 在运行一个 main 函数启动程序是,首先需要类加载起把主类加载到 JVM 中 通过 java 命令执行代码的流程 loadClass的类加载过程有如下几步: 类被加载到方法区中后主要包…

Maven项目通过maven central 发布到中央仓库 https://repo.maven.apache.org/ 手把手教学 最新教学

一、注册maven central账号 ​ https://central.sonatype.com/publishing/namespaces 我这里直接使用github账号登录 ,可以自己注册或者直接使用google账号或者github账号登录 这里github账号登录之后 应该只出现io.github 下面的io.gitee我也验证过 所以这里出…

Java时间类--JDK8

为什么JDK8会又新增时间相关类呢? ① JDK7的时间对象如果需要比较大小的话,必须都先转换成毫秒值;JDK8则不需要,可以直接比较。 ② JDK7的时间对象可以修改,在多线程环境下就会导致数据不安全;JDK8不能修改…

输入3个字符串,要求将字母按由小到大顺序输出

对于将3个整数按由小到大顺序输出,是很容易处理的。可以按照同样的算法来处理将3个字符串按大小顺序输出。可以直接写出程序。 编写程序: 运行结果: 这个程序是很好理解的。在程序中对字符串变量用关系运算符进行比较,如同对数值…

【Git 版本管理】合并 + 变更,看懂Git

看懂 Git 合并操作分离 HEAD分离 HEAD 测试 相对引用(^ || ~)操作符 ^相对引用 ^ 测试操作符 ~相对引用 ~ 测试 撤销变更Git ResetGit Revert撤销变更 测试 整理提交记录Git Cherry-pick测试 交互式 rebase交互式 rebase 测试 合并操作 关键字:commit、branch、merg…

Minio篇:初识MinIO

1. MinIO快速入门 1.1.MinIO核心概念 下面介绍MinIO中的几个核心概念,这些概念在所有的对象存储服务中也都是通用的。 对象(Object) 对象是实际的数据单元,例如我们上传的一个图片。 存储桶(Bucket) 存储…

【JAVA SE】多态

✨✨欢迎大家来到Celia的博客✨✨ 🎉🎉创作不易,请点赞关注,多多支持哦🎉🎉 所属专栏:JAVA 个人主页:Celias blog~ 目录 引言 一、多态 1.1 多态的概念 1.2 多态的实现条件 1.3…

深入探讨 Android 的 View 显示过程与源码分析

文章目录 1. 探讨 Android 的 View 显示过程1.1. onFinishInflate1.2. onAttachedToWindow1.3. onMeasure1.4. onSizeChanged1.5. onLayout1.6. onDraw 2. 系统代码分析1.1. onFinishInflate1.2. onAttachedToWindow1.3. onMeasure1.4. onSizeChanged1.5. onLayout1.6. onDraw …

数字化浪潮中的TPM革新:打造高效生产新范式

在数字化浪潮席卷全球的今天,传统生产管理模式正面临前所未有的挑战与机遇。TPM(全面生产维护)作为一种先进的生产管理理念,如何在数字化驱动下焕发新的活力,成为制造业转型升级的关键一环。 数字化技术为TPM带来了前…

探秘Flask中的表单数据处理

新书上架~👇全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一、引言 二、Flask中的表单处理机制 三、Flask表单处理实战 四、处理表单数据的注意事项…

为什么要使用动态代理IP?

一、什么是动态代理IP? 动态代理IP是指利用代理服务器来转发网络请求,并通过不断更新IP地址来保护访问者的原始IP,从而达到匿名访问、保护隐私和提高访问安全性的目的。动态代理IP在多个领域中都有广泛的应用,能够帮助用户…

vue路由跳转之【编程式导航与传参】

vue路由有两种跳转方式 ----> 编程式与声明式,本文重点讲解vue路由的【编程式导航 】【编程式导航传参 ( 查询参数传参 & 动态路由传参 ) 】等内容,并结合具体案例让小伙伴们深入理解 ,彻底掌握!创作不易,需要的…

2023年全球DDoS攻击现状与趋势分析

天翼安全科技有限公司副总工程师、运营保障部总经理陈林表示,2023年扫段攻击频次快速增长,成为网络基础设施面临的最大威胁。为躲避防御,低速扫段攻击成为主流达到攻击总数的73.19%;43.26%的C段攻击持续时间小于5分钟,…

Linux中部署MinIO

Linux中部署MinIO 下载MinIO可执行程序: wget https://dl.min.io/server/minio/release/linux-amd64/minio 添加执行权限: chmod x minio 创建存储目录,例如/data: mkdir -p /data 运行MinIO服务器,需要设置MIN…

【设计模式】JAVA Design Patterns——Factory Method(虚拟构造器模式)

🔍目的 为创建一个对象定义一个接口,但是让子类决定实例化哪个类。工厂方法允许类将实例化延迟到子类 🔍解释 真实世界例子 铁匠生产武器。精灵需要精灵武器,而兽人需要兽人武器。根据客户来召唤正确类型的铁匠。 通俗描述 它为类…

三维前端项目中用THREEWebGLRenderer于创建渲染器对象

在三维前端项目开发中,可以使用THREE.WebGLRenderer创建渲染器对象。艾斯视觉作为行业ui设计与前端开发服务商很高兴能在这里与你共同探讨:THREE.WebGLRenderer是 Three.js 库中用于将 3D 场景渲染到屏幕上的类。以下是一个示例代码,展示了如…

element中table的selection-change监听改变的那条数据的下标

<el-table ref"table" :loading"loading" :data"tableData" selection-change"handleSelectionChange"></el-table>当绑定方法selection-change&#xff0c;当选择项发生变化时会触发该事件 // 多选框选中数据handleSele…

truncate IDL_UB1$导致数据库open hang---惜分飞

在一次数据库恢复中,发现IDL_UB1$表被truncate,然后数据库在open过程中会hang住,而且不报任何错误,这里通过试验进行重现.对于这类问题,以前有过类似处理测试&#xff1a;truncate IDL_UB1$恢复试验数据库版本 SQL> select * from v$version; BANNER ---------------------…

vivado原语使用

首先介绍一下原语&#xff1a;其英文名字为Primitive。原语是Xilinx针对其器件特征开发的一系列常用模块的名字&#xff0c;用户可以将其看成Xilinx公司为用户提供的ip&#xff0c;是芯片中的基本元件&#xff0c;代表FPGA中实际拥有的硬件逻辑单元&#xff0c;如LUT&#xff0…