git基本操作(配图超详细讲解)

 个人主页:Lei宝啊 

愿所有美好如期而遇


目录

创建git本地仓库

配置仓库

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

修改文件

版本回退

撤销修改

删除文件


创建git本地仓库

要提前说的是,仓库是进⾏版本控制的⼀个⽂件⽬录。我们要想对⽂件进⾏版本控制,就必须先创建⼀个仓库出来。

首先创建一个目录,我们叫做Git

接着进入该目录,使用git init命令创建一个git本地仓库 

ls -al 我们可以看到.git目录,这就是我们的本地仓库了 

.git里的文件不要手动修改,否则仓库就废了。

配置仓库

当安装好Git后⾸先要做的事情是设置你的⽤户名e-mail地址,不要瞎给,给和你gitee相同的用户名和e-mail。

查看仓库配置命令

git config -l

我这里是配置过的。

配置命令

git config  user.name "your name"      (当前仓库进行配置)

git config  --global user.name "your name"      (本台机器上所有仓库进行配置)

git config user.email "email@example.com"

git config --global user.email "email@example.com"

删除对应配置命令

git config --unset user.name

git config --global --unset user.name

git config --unset user.email

git config --global --unset user.name

发现用户名的配置没有被删除,但是加了global就可以了,是因为我配置的时候就加了global,所以在配置和删除时一定要对应。

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

工作区:我们远程推送代码的地方

暂存区:.git下的index文件

版本库:就是.git,这个版本库里所有文件都可以被他管理起来

更深入的理解我们稍后会说到。

git add .将文件添加到暂存区

git commit -m "" 将文件提交到本地仓库

我们再来添加几个文件就可以开始我们的理解了。

我们tree .git

接下来顺着我的思路一步步看下去。 

这一串字符叫做commit id,而且我们看的时候需要分成两部分,前两个数字是文件夹的名字,后面是文件的名字,而且我们一般不能直接看到里面有什么,该类文件是通过安全哈希算法加密过的,我们可以通过git cat-file 查看

这个是我们最新提交的。

这是我们提交过的,也就是tree后的commit id

这是最新提交的上一条提交,也就是parent后的commit id,由于这条提交是第一条提交,所以没有parent的commit id

查看Readme文件的内容 

此外,git log可以查看历史提交记录

 为了使打印结果更加美观,我们可以这样

修改文件

我们提到的修改:新增,修改,删除

git跟踪管理的不是文件,而是工作区内容的修改,这些修改就存放在对象区。

我们再来对文件进行修改,这是我们修改的代码量比较少,所以我们还是可以区分哪些是修改的,而且找的到,如果我们的代码写了几百行,这时候增删我们再查看就找不全哪些是修改过的了,所以在这里我们认识一个指令

git status  查看上次提交之后是否对文件有再次修改

没有需要提交的内容,这是因为我们没有add修改过的Readme文件,但是下面是可以看到我们对Readme文件是有修改的。

但是这样还不够,我们看不到具体修改了什么内容,这里还有一个指令

git diff 文件名 这个指令用来显示暂存区和工作区的差别

 

我们再来试一次

这一次我们删除了工作区的一个文件,(Read文件未添加和提交,所以我们删除也不会显示),并且在Readme文件中添加了些内容,通过git status可以查看上次提交后是否有修改,这次我们有删除和修改。

新增了两行。

我们能产生对比效果,是因为已经经过了add,这里是在添加这两行前对Readme文件进行了add,因为git diff是对暂存区和工作区的一个对比。 

版本回退

之前我们提到过git可以管理历史文件的版本,如果有天你想找回之前版本的文件,这时候,版本回退就很必要了。

我们可以看到我们提交的文件历史记录,现在我们将后来再次修改的文件再次做提交。

现在我们想将文件退回到第二个版本,我们当前是最新版本。

git reset --soft commit id

git reset --mixed commit id

git reset --hard commit id

或者 

git reset --soft HEAD^, HEAD^表示上个版本,HEAD^^表示上上个版本。

……

也可以

git reset --soft HEAD~1 表示退回第几个版本,0就代表当前的最新版本。

……

三个选项的区别是什么呢?

首先我们要明确的是上个版本与当前版本差的是一句try again。

而系统默认的回退方式是--mixed,我们也要慎重使用--hard,否则工作区辛苦写了几天的代码,一行指令就没了,无法找回。

我们再回退至刚才的最新版本

我们能够自由回退到任意版本,就是因为我们能够找到commit id,如果说你不小心clear,找不到commit id怎么办,没关系,还有办法

git reflog  该命令记录了本地的每一条命令

但作者还想说的是,随着提交记录的变多,有些记录早就找不到了,到那时候,就真找不回来了。

值得说明的是,git回退版本的速度非常快,原因我们画图来解释:

 

也就是说每个版本都有单独存储,需要回退到哪个版本就使HEAD指向哪个版本。

 

撤销修改

版本回退本质是回退版本库,但是撤销修改本质是撤销工作区内容的修改。

我们再对Readme文件做一些修改

我们发现之前的内容没了,如何撤销修改?  

未add

git checkout -- filename

已经add,但未commit 

这时候就要重新提起我们的reset了,他有回退到当前版本的功能,所谓当前版本,就是以版本库为参照,回退到版本库。

我们画个图:

我们要回退到版本库那个样子,怎么做呢?

有两个办法 ,使用--hard全部回退到当前版本,一步到位

第二个办法,先--mixed回退暂存区至当前版本,然后checkout --撤销修改

已经commit 

还是有两种办法,第一种就是reset指定上一次的版本进行回退,直接--hard commit id

第二种方式就是--hard HEAD^回退至上一个版本。

删除文件

删除文件也算是一种修改,我们rm file删除文件后,正常添加,提交就可以了。

还有简单一步的:

省去了提交这一步骤。

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

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

相关文章

Python语言:随机生成几个数案例分析讲解

背景 在某一节课上,老师使用xx通软件随机生成几个学号,并让对应学号同学回答问题。虽然我对xx通软件没啥好感,不过感觉这个随机生成学号功能挺不错的。今天我用python实现一个这个功能。 其实原理挺简单的,就是就是在一堆数字里随…

伦敦银和美白银的关系

与黄金相似,世界上白银交易的基础就是伦敦白银市场,人们利用设立在伦敦的专们负责清算银行(与黄金的清算银行相同)所开设的账户进行白银保证金交易。在伦敦市场,以美元清算的伦敦白银价格,是以美元买进1金衡…

【广州华锐互动】VR技术助力中小学生安全教育,让学生在虚拟世界中学会自我保护!

随着科技的不断发展,虚拟现实(VR)技术已经逐渐走进我们的生活。在教育领域,VR技术的应用也日益广泛,为传统的教育模式带来了革命性的变革。中小学生安全教育作为学生生活中的重要组成部分,其重要性不言而喻…

LeetCode47-全排列II-剪枝逻辑

参考链接: 🔗:卡尔的代码随想录:全排列II 这里第一层,used只有一个元素为1,代表只取出了1个元素作为排列,第二层used有两个元素为1,代表取出了2个元素作为排列,因为数组有序,所以重复的元素都是挨着的,因此可以使用如下语句去重. 其中visit[i-1]False的话,就是代表…

深入理解Linux网络笔记(七):异常TCP连接建立情况、如何查看是否有连接队列溢出发生

本文为《深入理解Linux网络》学习笔记,使用的Linux源码版本是3.10,网卡驱动默认采用的都是Intel的igb网卡驱动 Linux源码在线阅读:https://elixir.bootlin.com/linux/v3.10/source 5、深度理解TCP连接建立过程(二) 4&…

为什么我学了几天 STM32 感觉一脸茫然?

为什么我学了几天 STM32 感觉一脸茫然? 刷到过b站的zhihui君吧,去看他的回答,他的第一块开发板是arduino,这种级别的人物,在国内也是大神级了,最早学电子方向也是用的arduino。最近很多小伙伴找我&#xff…

基于PLC的自动洗碗机控制系统(论文+源码)

1.系统设计 本课题基于PLC的自动洗碗机控制系统,在此将主要功能设定如下: 通过上下喷头旋转喷水湿润餐具;添加洗涤剂(洗碗液);上下喷头喷水洗涤餐具;排出污水;往碗碟上喷洒更多的水…

适用于 Windows 的 10 款最佳数据恢复工具

在数字时代,数据就是一切。 从珍贵的家庭照片和重要的工作文件到我们最喜欢的音乐和电影,我们的生活存储在越来越多的不同设备上。 系统崩溃、意外删除或恶意病毒都可能导致有价值的数据在瞬间丢失。 这就是数据恢复工具的用武之地。 适用于 Windows 的 …

SpringMVC基础

文章目录 SpringMVC基础MVC理论基础第一个SpringMVC程序请求RequestMapping传递单参传递多参传递对象传递数组和集合传递JSON数据RequestParamPathVariableRequestPartCookie/Session获取Header 响应返回静态页面ResponseBody返回HTML代码⽚段返回JSON设置状态码设置Header设置…

Unity3D 解决相机拉高之后物体阴影消失

在Edit-Project Settings-Quality中找到Shadow Distance,将其调大即可

FreeRtos 任务切换深入分析

一、背景知识: 1、任务切换包含三个基本流程:保护现场、更新TCB、恢复现场并跳转 2、freertos的任务切换是在xPortPendSVHandler 中断函数中完成的 3、中断函数在调用之前,硬件已经保存了r0,r1,r2,r3,r12,r14(LR),r15(pc),恢复…

山西电力市场日前价格预测【2023-11-18】

1.日前价格预测 预测说明: 如上图所示,预测明日(2023-11-18)山西电力市场全天平均日前电价为202.44元/MWh。其中,最高日前电价为346.71元/MWh,预计出现在18:00。最低日前电价为0.00元/MWh,预计…

Lesson 03 C/C++内存管理

C:渴望力量吗,少年? 文章目录 一、C内存管理方式1. new/delete操作内置类型2. new和delete操作自定义类型 二、operator new与operator delete函数三、new和delete的实现原理1. 内置类型2. 自定义类型 四、内存泄漏1. 什么是内存泄漏2. 内存泄…

基于Python实现大型家用电器和电子产品在线商店购买数据分析【500010098】

导入模块 import pandas as pd import numpy as np import matplotlib.pyplot as plt获取数据 df pd.read_csv( r"./data/kz.csv",sep,)数据描述 该数据包含2020年4月至2020年11月从大型家用电器和电子产品在线商店购买的数据。 数据说明 event_time&#xff1a…

[最新榜单] 智能手机数据恢复的 10 款最佳应用

当手机上的数据消失时,这让您感到非常难过。 由于事故而突然丢失重要的聊天记忆、照片和其他您想保留的东西的悲伤。 如果它没有被淹没,您可以使用数据恢复应用程序修复它。 在本文中,我们将解释一些有用的数据恢复应用程序。 数据恢复应用…

「Verilog学习笔记」数据选择器实现逻辑电路

专栏前言 本专栏的内容主要是记录本人学习Verilog过程中的一些知识点,刷题网站用的是牛客网 分析 将变量A、B接入4选1数据选择器选择输入端S0 S1。将变量C分配在数据输入端。从表中可以看出输出L与变量C的关系。 当AB00时选通D0而此时L0,所以数据端D0接0…

PyTorch 实战之水果分类

当我们试图提高神经网络的准确性时,经常会遇到过拟合训练数据的情况。当我们运行测试数据的模型时,这会导致一个糟糕的预测。因此,我采取了一个数据集,并应用这些技术,不仅提高准确性,而且还处理过拟合的问…

AI技术:分享8个非常实用的AI绘画网站

目录 1、Midjourney 2、Stable Diffusion Omline 3、Microsoft Designer 4、Craiyon 5、NightCafe Studio 6、Wombo 7、Dalle-2 8、Avatar AI 1、Midjourney 特点:业内标杆,效果最强大 Midjourney是基于diffusion的AI图画艺术生成器。生成图片不…

OpenAI GPT-4 Turbo发布:开创AI新时代

🎥 屿小夏 : 个人主页 🔥个人专栏 : IT杂谈 🌄 莫道桑榆晚,为霞尚满天! 文章目录 📑前言一. GPT-4 Turbo的突破1.1上下文长度和控制手段的加强:1.2多模态支持&#xff1a…

vb.net U盘或移动硬盘 插入 自动(静默)复制指定格式文件

U盘或移动硬盘 插入 自动复制指定格式文件至系统盘符 开发语言:vb.net 重要申明:该程序只是防止本人不在电脑旁时,别人偷偷copy你的电脑文件,让他偷鸡成了也要蚀把米。严禁从事黑客或违反道德等不良行为,故而不发布程…