git的学习教程

embedded/2024/12/22 23:22:58/

目录

1.初始化仓库

2.环境配置

2.1配置用户姓名:

2.2配置用户邮箱:

​编辑

2.3删除姓名配置:

2.4删除邮箱配置:

2.5全局配置姓名:

2.6全局配置邮箱:

2.7全局删除姓名:

2.8全局删除邮箱:

2.9检查配置成功与否

2.10检查全局配置成功

3.认识工作区,暂存区,版本库

3.1版本库

3.2工作区

3.3暂存区

4.对应的相关指令

git%E7%9A%84%E7%9B%B8%E5%85%B3%E6%96%87%E4%BB%B6-toc" style="margin-left:0px;">5.查看.git的相关文件

6.对于修改前后文件变化的查看

6.1status指令

6.2diff指令

6.3操作后再次观察

git%E9%87%8C%E9%9D%A2%E7%9A%84%E7%89%88%E6%9C%AC%E5%9B%9E%E9%80%80-toc" style="margin-left:0px;">7.git里面的版本回退

7.1回退的三个选项

7.2回退演示

8.撤销修改

8.1没有add场景

8.2只进行了add操作

8.3进行了commit操作

9.删除文件的两个方式

9.1普通删除

git%E5%88%A0%E9%99%A4-toc" style="margin-left:80px;">9.2git删除


1.初始化仓库

创建一个本地的仓库并且进行初始化的操作,.git是对于我们的这个本地的仓库进行追踪管理的,我们一般不要去修改里面的内容,否则会破坏我们的仓库;

2.环境配置

为什么要进行配置,有经验的同学都知道,这个使用的过程中会出现各种各样的问题,无论是python还是qt这些,我们提前配置就是为了避免掉一些问题;

2.1配置用户姓名:

引号里面就填入姓名即可;

2.2配置用户邮箱:

引号里面就填写自己的邮箱,我觉得这个git和仓库相互关联,我建议这个地方使用gitee上面的那个邮箱进行配置;

2.3删除姓名配置:

--unset就是删除名字的相关配置;

2.4删除邮箱配置:

2.5全局配置姓名:

--global就是把这个设置应用于所有的仓库,我们只是创建了一个仓库,其实我们是可以创建多个仓库的,加上--global之后,这个配置就会应用于全部的仓库;

2.6全局配置邮箱:

2.7全局删除姓名:

删除的时候对于这个--global选项,也需要加上--global进行这个配置的删除;

2.8全局删除邮箱:

2.9检查配置成功与否

检查我们的配置是否成功,显示的内容里面会有我们的用户名和密码;

2.10检查全局配置成功

检查全局配置,加上--global选项;

3.认识工作区,暂存区,版本库

3.1版本库

例如我们在gitcode这个路径下面去创建一个test.c文件,这个时候里面就存在.git这个隐藏文件和test.c文件,但是这个时候我们的仓库是没有办法对于这个test.c文件进行管理的,因为这个时候我们的test.c是没有存在于这个.git文件里面的;

但是这个时候我们也不可以为了方便管理而对于这个.git文件进行操作,这个test.c文件只是暂时没有办法被我们管理到,但是我们可以通过一些手段去管理这个文件;

在这个里面,我们把这个.git叫做版本库,也叫做仓库,就是我们熟悉的本地仓库,这个里面包含了暂存区和master分支,这个我们后续还会介绍到的;

3.2工作区

下面这个表阐明了两个之间的关系,上面我们已经介绍到了这个.git就是我们的版本库,这个test.c文件实际上就位于这个工作区里面,这个工作取得文件我们是没有办法直接管理的,但是我们可以通过一定的手段去管理;

3.3暂存区

我们的工作区里面的文件经过add之后就会被存储到暂存区里面去,暂存区里面的文件经过commit之后就可以到我们的master分支里面去,实际上这个版本库里面还有一个objects对象库

我们对于这个工作区里面的文件的修改内容都会同步到我们的对象库里面的一个个git对象里面去;

4.对应的相关指令

git add 后面可以加上对应的文件名字,也可以加上一个点,表示add的就是当前的目录下面的文件

git commit -m 后面加上对于这个版本的文件的修改的相关的说明,这个就是把暂存区文件同步到本地仓库里面去;

git push就是把我们的代码推送到远端仓库;

git log就是对于我们的提交记录的相关说明,这个需要在我们至少commit一次之后才会进行,上面的演示里面,这个add之后使用这个git log之后就会报错,但是commit 之后这个就会正常的显示修改的内容;

git%E7%9A%84%E7%9B%B8%E5%85%B3%E6%96%87%E4%BB%B6">5.查看.git的相关文件

首先使用

tree .git/

这个指令显示出来所有的.git文件里面的内容 ,我们对照这个打印接过来进行后续的分析;

需要做的准备工作就是,创建一个文件,这个文件里面添加上一些内容,然后执行add commit操作,执行push的时候会报错,这个时候不用管它;

使用git log ==pretty=oneline指令查看这个过程修改内容的说明;

使用.git/HEAD查看这个指针具体搞的是什么,然后根据这个打印的结果去索引,查看这个.git里面的文件内容不能直接使用cat命令,而是使用cat-file -p选项加上对应的这个索引,查看输出的结果

我们根据这个打印的编码不断的进行索引,最后就会看到我们创建的文件和对于文件里面写入内容

可能上面的这个比较难懂,其实这个就是一个查看文件的指令介绍,主要是多运用,多去创建几个文件夹和文件进行这个操作不断的尝试,并且和已有的这个.git里面的内容去进行比对,帮助我们更好地理解;

6.对于修改前后文件变化的查看

我们想要对于下面的两个指令进行验证,首先需要做的就是去创建一个文件,这个文件里面去写入一些内容,然后执行git add添加到暂存区里面去,然后使用git commit指令把这个内容搞到我们的本地仓库里面去;

接下来我们对于这个文件的内容进行修改,修改之后保存即可,不要进行add和commit操作;

6.1status指令

我们修改之后使用这个指令就会显示在暂存区里面的一些情况:

我的这个就会显示我对于这个test.c文件进行了修改;

6.2diff指令

这个会显示具体的变化情况:我的这个就是在原来的三行代码的基础上面添加了第四行代码,这个显示的就是具体的内容上面的差异;

6.3操作后再次观察

这个时候我们进行add和commit之后,我们再去使用这个status指令,就会被提示没有内容需要被提交,diff也没有显示出来任何的内容,这个正好和我们的预期一样(就是我们修改之后没有add,commit的时候这个指令就会显示出来变化的呢内容,add和commit之后这个就没有显示的内容了)

git%E9%87%8C%E9%9D%A2%E7%9A%84%E7%89%88%E6%9C%AC%E5%9B%9E%E9%80%80">7.git里面的版本回退

7.1回退的三个选项

分别是--soft选项,--mixed选项,--hard选项等等,这三个选项的作用都是进行回退,但是退的程度不一样,上面的表里面显示了这个不同选项的回退程度;

这个里面的版本库是包含了暂存区的,第一行显示的就是这个文件里面的内容,下面的三行显示的分别是对于使用不同的指令回退之后的内容的变化;

--soft指令就是让这个版本库进行回退,其他的两个不变,--hard就是三个全部回退,--mixed是我们没有添加这个选项的时候系统默认的回退选项;

7.2回退演示

这个log就会显示出来所有的修改情况,我的这个是一共进行了4次修改;

reset就是进行回退的命令,后面添加的这个就是对应的会回退的版本,womenshiyonglog的打印结果,最新的修改会在最上面,因此这个f2e9就是最远的一次修改,我们直接回退到这个情况里面去;

当然这4个编码,我们都可以使用,来回退到我们想要回退的位置;

8.撤销修改

8.1没有add场景

第一种解决方案就是直接对于这个文件的内容进行手动的删除操作;

git checkout -- test.c这个指令就会回退到最近一次的这个修改的内容;

8.2只进行了add操作

进行add相当于就是把这个修改的内容同步到了暂存区里面去;

这个时候我们可以使用reset这个指令,这个时候工作区和暂存区内容都修改了,但是版本库里面没有修改,我们使用reset就是把这个暂存区里面的内容回退到当前的版本;

这个时候就回到了上面的一种情况,我们使用checkout 指令把这个工作区修改的内容也进行还原

8.3进行了commit操作

使用--hard选项就可以把这个工作区,版本库和暂存区内容全部回退,HEAD表示的是当前版本,HEAD^表示的就是上一个版本,HEAD^^表示的就是上上个版本;

9.删除文件的两个方式

9.1普通删除

git%E5%88%A0%E9%99%A4">9.2git删除

另外一种就是使用git rm指令删除,这个就相当于上面的先rm指令,再add指令;

这个就是相当于git rm直接取代了上面的两步操作,我们使用完git rm之后,直接使用git commit进行提交至版本库里面即可;

我的这边报错了,查阅之后发现和分支有关,但是我还不是很了解这个,后续学到我们会解释的,我们只需要记住上面的两个方式即可,并且不断的尝试练习。


http://www.ppmy.cn/embedded/97358.html

相关文章

vue 拦截器

拦截器——main.js中,可以编写 Axios.interceptors.request.use()来拦截所有的请求,对请求做相应护理后再放行搭配后端,这也是全局的,每个请求中无需自己处理 在main.js中配置 Axios.defaults.baseURLhttp://127.0.0.1:8088; …

前端读取response.headers异常:Cannot read properties of undefined (reading ‘split‘)

[TOC](前端读取response.headers异常:Cannot read properties of undefined (reading ‘split’) ) 前端读取response.headers异常 Cannot read properties of undefined (reading ‘split’) TypeError: Cannot read properties of undefined (reading ‘split’) 报错解释&a…

DHT11温湿度传感器详解(STM32)

目录 一、介绍 二、传感器原理 1.原理图 2.工作时序 3.起始信号与响应信号 4.读数据时序 5.DHT11数据格式 三、程序设计 main.c文件 dht11.h文件 dht11.c文件 四、实验效果展示 五、资料获取 项目分享 一、介绍 DHT11是一款含有已校准数字信号输出的温湿度复合传感器&…

Android常见的界面布局

目录 ​前言 1.线性布局LinearLayout 2.相对布局RelativeLayout 3.表格布局TableLayout 4.网格布局GridLayout 实现一个计算器界面 改Button按钮颜色 5.帧布局FrameLayout 前言 在Android应用程序中,界面是由布局和控件组成的。控件是功能单元,负…

【Python学习-UI界面】PyQt5 小部件14-QDock 子窗口

可停靠窗口是一个子窗口,可以保持浮动状态或附加到主窗口的指定位置。 QMainWindow类的主窗口对象保留了一块区域供可停靠窗口使用。该区域位于中央窗口部件周围。 可停靠窗口可以在主窗口内移动,也可以被取消停靠并由用户移动到新的区域。 样式如下: …

八种排序算法(C语言)

归并排序(递归与非递归实现,C语言)-CSDN博客 快速排序(三种方法,非递归快排,C语言)-CSDN博客 堆排序(C语言)-CSDN博客 选择排序(C语言)以及选择排序优化-CSDN博客 冒泡排序(C语言)-CSDN博客 直接插入排序(C语言)-CSDN博客 希尔排序( 缩小增量排序 )(C语言)-CSDN博客 计数…

vue前端可以完整的显示编辑子级部门,用户管理可以为用户分配角色和部门?

用户和角色是一对多的关系用户和部门是多对多得关系<template><div class="s"><!-- 操作按钮 --><div class="shang"><el-input v-model="searchText" placeholder="请输入搜索关键词" style="width:…

uniapp App跳转微信小程序并互相传递参数、接收微信小程序传递的参数

1、App端跳转微信小程序&#xff08;注意id一定是小程序的原始ID&#xff0c;在小程序后台设置-基本设置里可以看到&#xff09; 注意&#xff1a;与微信小程序跳转微信小程序不同&#xff0c;App端不支持 uni.navigateToMiniProgram&#xff0c;App平台打开微信小程序&#x…