当前位置: 首页 > news >正文

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删除文件后,正常添加,提交就可以了。

还有简单一步的:

省去了提交这一步骤。

相关文章:

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

个人主页:Lei宝啊 愿所有美好如期而遇 目录 创建git本地仓库 配置仓库 认识工作区,暂存区,版本库 修改文件 版本回退 撤销修改 删除文件 创建git本地仓库 要提前说的是,仓库是进⾏版本控制的⼀个⽂件⽬录。我们要想对⽂…...

【网络通信】浅析UDP与TCP协议的奥秘

在现代互联网中,UDP(用户数据报协议)和TCP(传输控制协议)是两种最常用的传输协议,它们被广泛应用于网络数据传输。尽管这两种协议都可以用来在网络上传输数据,但它们在设计目标、特点和适用场景…...

C#核心笔记——(二)C#语言基础

一、C#程序 1.1 基础程序 using System; //引入命名空间namespace CsharpTest //将以下类定义在CsharpTest命名空间中 {internal class TestProgram //定义TestProgram类{public void Test() { }//定义Test方法} }方法是C#中的诸多种类的函数之一。另一种函数*,还…...

C++ 删除无头链上所有指定值为x的节点。

C 删除无头链上所有指定值为x的节点。 #include<stdio.h> #include<ctype.h> #include<stdlib.h> typedef struct app {int data;struct app* next; }APP; int main() {int n;int node;int x;while (scanf("%d", &n) ! EOF){APP* head NULL, …...

linux基本指令以及热键

基本指令 ♥clear ♥whoami ♥who ♥pwd ♥ls指令&#xff08;重点&#xff09; ls -a&#xff1a; ls -l ♥mkdir ♥cd指令 ♥touch指令 ♥stat指令 ♥rmdir指令 && rm 指令 ♥man指令 ♥nano指令 ♥cp指令 ♥mv指令 ♥cat指令 &#x1f5e1;输出/输出重定向 &#x1…...

Rocketmq消费消息时不丢失不重复

消息消费不丢失 手动ACK 在消费者端&#xff0c;需要确保在消息拉取并消费成功之后再给Broker返回ACK&#xff0c;就可以保证消息不丢失了&#xff0c;如果这个过程中Broker一直没收到ACK&#xff0c;那么就可以重试。所以&#xff0c;在消费者的代码中&#xff0c;一定要在业…...

RedisInsight——redis的桌面UI工具使用实践

下载 官网下载安装。下载地址在这里 填个邮箱地址就可以下载了。 安装使用。 安装成功后开始使用。 1. 你可以add一个地址。或者登录redis cloud 去auto-discover 2 . 新增你的redis库地址。注意index的取值 3。现在可以登录到redis了。看看结果 这是现在 在服务器上执行…...

JVM对象创建与内存分配

对象的创建 对象创建的主要流程&#xff1a; 类加载推荐博客&#xff1a;JVM类加载机制详解 类加载检查 虚拟机遇到一条new指令时&#xff0c;首先将去检查这个指令的参数是否能在常量池中定位到一个类的符号引用&#xff0c;并且检查这个符号引用代表的类是否已被加载、解析…...

央国企数字化转型难在哪?为什么要数字化转型?

科技在发展&#xff0c;技术在升级&#xff0c;全球信息化、数字化的步伐在加快&#xff0c;企业想要在未来的发展中抓住机会&#xff0c;更好地发展壮大&#xff0c;就需要加快企业数字化转型的速度&#xff0c;才能立足于信息化、数字化时代&#xff0c;央国企作为企业中的一…...

第7天:信息打点-资产泄漏amp;CMS识别amp;Git监控amp;SVNamp;DS_Storeamp;备份

第7天&#xff1a;信息打点-资产泄漏&CMS识别&Git监控&SVN&DS_Store&备份 知识点&#xff1a; 一、cms指纹识别获取方式 网上开源的程序&#xff0c;得到名字就可以搜索直接获取到源码。 cms在线识别&#xff1a; CMS识别&#xff1a;https://www.yun…...

不可思议,红警居然开源了!

红警&#xff0c;准确的说应该叫“红色警戒”&#xff0c;是大部分 80/90 后记忆里跟游戏二字关系最深的情节。 相信每一名 80/90 后&#xff0c;都有一段难忘的红警岁月&#xff0c;甚至可以说很多人的青春&#xff0c;就叫红警! 说到红色警戒游戏&#xff0c;估计应该是很多…...

yolo系列模型训练数据集全流程制作方法(附数据增强代码)

yolo系列的模型在目标检测领域里面受众非常广&#xff0c;也十分流行&#xff0c;但是在使用yolo进行目标检测训练的时候&#xff0c;往往要将VOC格式的数据集转化为yolo专属的数据集&#xff0c;而yolo的训练数据集制作方法呢&#xff0c;最常见的也是有两种&#xff0c;下面我…...

4、FFmpeg命令行操作7

转封装(1) 保持编码格式&#xff1a; ffmpeg -i test.mp4 -vcodec copy -acodec copy test_copy.ts ffmpeg -i test.mp4 -codec copy test_copy2.ts 改变编码格式&#xff1a; ffmpeg -i test.mp4 -vcodec libx265 -acodec libmp3lame out_h265_mp3.mkv …...

算法进阶——链表中环的入口节点

题目 给一个长度为n链表&#xff0c;若其中包含环&#xff0c;请找出该链表的环的入口结点&#xff0c;否则&#xff0c;返回null。 数据范围&#xff1a;1<结点值<10000 要求&#xff1a;空间复杂度O(1)&#xff0c;时间复杂度O(n) 例如&#xff0c;输入{1,2},{3,4,5…...

无线WiFi安全渗透与攻防(N.1)WPA渗透-pyrit:batch-table加速attack_db模块加速_“attack_db”模块加速

WPA渗透-pyrit:batch-table加速attack_db模块加速_“attack_db”模块加速 WPA渗透-pyrit:batch-table加速attack_db模块加速_“attack_db”模块加速1.渗透WIFI1.导入密码字典2.导入essid,破解完成记得删除3.批处理数据库,速度比较慢,耐心等待4.batch-table(批处理数据库)加…...

YOLOV8部署Android Studio安卓平台NCNN

下载Android Studio&#xff0c;配置安卓开发环境&#xff0c;这个过程比较漫长。 安装cmake&#xff0c;注意安装的是cmake3.10版本。 根据手机安卓版本选择相应的安卓版本&#xff0c;我的是红米K30Pro&#xff0c;安卓12。 使用腾讯开源的ncnn&#xff0c;这是一个为手机端极…...

【算法萌新闯力扣】:旋转字符串

力扣热题&#xff1a;796.旋转字符串 开篇 今天下午刷了6道力扣算法题&#xff0c;选了一道有多种解法的题目与大家分享。 题目链接:796.旋转字符串 题目描述 代码思路 完全按照题目的要求&#xff0c;利用StringBuffer中的方法对字符串进行旋转&#xff0c;寻找相同的一项 …...

可逆矩阵的性质

如果矩阵A可逆&#xff0c;那么它的逆矩阵也可逆&#xff0c;并且如果矩阵A可逆&#xff0c;假设是一个不为0的数&#xff0c;那么也可逆&#xff0c;并且如果矩阵A和都可逆&#xff0c;而且它们的阶数也相同&#xff0c;那么它们的乘积也是可逆的&#xff0c;并且如果矩阵A可逆…...

HIT 模式识别 手写汉字分类 Python实现

训练集数据 TrainSamples-400.csv&#xff0c;含 100 个不同汉字&#xff0c;每个汉字 400 个实例&#xff0c;每个实例均为 64*64 的二值图像&#xff1b; 训练集标注TrainSamples-400.csv&#xff0c;为 40000 个 0 到 99 间的整数&#xff0c;表示训练集中每个实例所属汉字类…...

GPT-4V-Act :一个多模态AI助手,能够像人类一样模拟通过鼠标和键盘进行网页浏览。

内容来源&#xff1a;xiaohuggg GPT-4V-Act &#xff1a;一个多模态AI助手&#xff0c;能够像人类一样模拟通过鼠标和键盘进行网页浏览。 它可以模拟人类浏览网页时的行为&#xff0c;如点击链接、填写表单、滚动页面等。 它通过视觉理解技术识别网页上的元素&#xff0c;就像…...

Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)

引言&#xff1a;为什么 Eureka 依然是存量系统的核心&#xff1f; 尽管 Nacos 等新注册中心崛起&#xff0c;但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制&#xff0c;是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...

Ascend NPU上适配Step-Audio模型

1 概述 1.1 简述 Step-Audio 是业界首个集语音理解与生成控制一体化的产品级开源实时语音对话系统&#xff0c;支持多语言对话&#xff08;如 中文&#xff0c;英文&#xff0c;日语&#xff09;&#xff0c;语音情感&#xff08;如 开心&#xff0c;悲伤&#xff09;&#x…...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决

Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决 问题背景 在一个基于 Spring Cloud Gateway WebFlux 构建的微服务项目中&#xff0c;新增了一个本地验证码接口 /code&#xff0c;使用函数式路由&#xff08;RouterFunction&#xff09;和 Hutool 的 Circle…...

USB Over IP专用硬件的5个特点

USB over IP技术通过将USB协议数据封装在标准TCP/IP网络数据包中&#xff0c;从根本上改变了USB连接。这允许客户端通过局域网或广域网远程访问和控制物理连接到服务器的USB设备&#xff08;如专用硬件设备&#xff09;&#xff0c;从而消除了直接物理连接的需要。USB over IP的…...

解决:Android studio 编译后报错\app\src\main\cpp\CMakeLists.txt‘ to exist

现象&#xff1a; android studio报错&#xff1a; [CXX1409] D:\GitLab\xxxxx\app.cxx\Debug\3f3w4y1i\arm64-v8a\android_gradle_build.json : expected buildFiles file ‘D:\GitLab\xxxxx\app\src\main\cpp\CMakeLists.txt’ to exist 解决&#xff1a; 不要动CMakeLists.…...

【LeetCode】算法详解#6 ---除自身以外数组的乘积

1.题目介绍 给定一个整数数组 nums&#xff0c;返回 数组 answer &#xff0c;其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法&#xff0c;且在 O…...

数学建模-滑翔伞伞翼面积的设计,运动状态计算和优化 !

我们考虑滑翔伞的伞翼面积设计问题以及运动状态描述。滑翔伞的性能主要取决于伞翼面积、气动特性以及飞行员的重量。我们的目标是建立数学模型来描述滑翔伞的运动状态,并优化伞翼面积的设计。 一、问题分析 滑翔伞在飞行过程中受到重力、升力和阻力的作用。升力和阻力与伞翼面…...

区块链技术概述

区块链技术是一种去中心化、分布式账本技术&#xff0c;通过密码学、共识机制和智能合约等核心组件&#xff0c;实现数据不可篡改、透明可追溯的系统。 一、核心技术 1. 去中心化 特点&#xff1a;数据存储在网络中的多个节点&#xff08;计算机&#xff09;&#xff0c;而非…...

基于stm32F10x 系列微控制器的智能电子琴(附完整项目源码、详细接线及讲解视频)

注&#xff1a;文章末尾网盘链接中自取成品使用演示视频、项目源码、项目文档 所用硬件&#xff1a;STM32F103C8T6、无源蜂鸣器、44矩阵键盘、flash存储模块、OLED显示屏、RGB三色灯、面包板、杜邦线、usb转ttl串口 stm32f103c8t6 面包板 …...