git commit三种回退的方式

news2024/11/13 9:25:01

git commit 回退

弄清楚三个区

工作区(working tree): 本地编辑器
暂存区(index):git add操作后进入暂存区,可用git status查看
本地仓库(repository):git commit 后进入本地仓库

修改commit

当我们第一次提交后,发现还有修改没有提交,通常我们想的是在add/commit一次,这样存在的问题呢就是会有一些扰乱我们的commit信息。比如我们第二次commit提交信息可能是“删除上次提交的debugger”
其实我们两次提交内容的目的都是同一个,比如修改bug,第一次提交时忘了删除我们调试时留下的debugger。然后就删除提交第二次,第二次的提示信息就很不友好。我们怎么来将两个commit合为一个呢?

git commit --amend // 把上一次的commit记录去除,修改commit信息。

git commit --amend

第一次提交,查看提交日志已经存在:
在这里插入图片描述
第二次add,然后提交修改
在这里插入图片描述

进入编辑界面,修改我们的提交信息
在这里插入图片描述
修改后

在这里插入图片描述

查看提交日志,只存在一次提交记录,信息也是显示的我们第二次提交的信息。

在这里插入图片描述

回退commit

git reset --soft // 回退到指定commit,该commit之后的提交内容,保留工作目录,并把重置 HEAD 所带来的新的差异放进暂存区
git reset --hard // 回退到指定commit,该commit之后的提交内容,工作区和暂存区的内容都被抹掉

git resetgit reset --mixed // 不带参数,或带参数–mixed(默认参数),与git reset --soft 不同,它将会把差异放到工作区
git reset --soft

首先我们先提交两次记录,这是第一次:
在这里插入图片描述

第二次:
在这里插入图片描述

查看提交HEAD
在这里插入图片描述

此时工作区没有任何修改未提交
在这里插入图片描述

git reset --soft HEAD^之后, 工作区有修改未提交,最后一次提交的内容暂存区保存了下来
在这里插入图片描述

提交记录以及不在,说明仓库中没有了这次提交
在这里插入图片描述

我们git status 发现上次提交的内容在暂存区,想要再次提交我们再继续commit就行

在这里插入图片描述

git reset --hard
首先我们提交,查看提交记录
在这里插入图片描述

git reset --hard 1134cb6回退到版本1134cb6(git reflog 可查询HEAD)
在这里插入图片描述

没有了txt文件,内容被彻底的删除了。
在这里插入图片描述

也没有了提交记录,工作区也没有代码。这时候工作区,暂存区和仓库都是一样的回退到了指定commit

在这里插入图片描述

git reset HEAD || git reset --mixed
添加commit
在这里插入图片描述

回退,查看状态,前一次提交目前在工作区
在这里插入图片描述

小结

git commit --amend 好用,减少提交无用信息,可常用。
git reset --soft HEAD 回退,差异存在暂存区,也好用,不轻易删除代码。
git reset --hard HEAD 回退删除, 慎用,一不小心删除代码还不可逆。
git reset HEAD || git reset --mixed HEAD 回退,改变的差异在工作区。

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

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

相关文章

C#上位机与三菱FX3UPLC实现异步伪实时串口通信机制(串口类通信可参考)

C#上位机与三菱FX3UPLC实现异步伪实时串口通信机制(串口类通信可参考) 一、串口通信概述1.1 串口通信1.2 串行通信1.2.1 串行同步通信1.2.2 串行异步通信1.2.2.1 异步通信的数据格式1.2.2.2 异步通信的数据发送过程1.2.2.3 异步通信的数据接收过程 1.3 串…

Redis如何保障缓存与数据库的数据一致性问题?

目录 一.最经典的数据库加缓存的双写双删模式 二. 高并发场景下的缓存数据库双写不一致问题分析与解决方案设计 三、上面高并发的场景下,该解决方案要注意的问题 一.最经典的数据库加缓存的双写双删模式 1.1 Cache Aside Pattern概念以及读写逻辑 (…

redis非关系型数据库部署和使用(linux)

1.概念 NoSQL非关系型数据库是一种不使用关系模型来组织数据的数据库,通常用于存储非结构化或半结构化的数据,不支持或只部分支持SQL语言,满足最终一致性。非关系型数据库有多种类型,例如键值数据库、文档数据库、列式数据库、图形…

Shopee、Grab、Gojek 打造超级app已成为主流

超级App的概念在全球范围内逐渐被接受和采用。 超级App是指一种综合性的应用程序,允许用户在同一个平台上访问多个不同的服务,包括支付、社交媒体、出行、点餐等等。它的发源地是东南亚地区,如中国的微信、印度的Paytm和印尼的Gojek等应用&a…

Spring入门案例--bean的生命周期

bean的生命周期 关于bean的相关知识还有最后一个是bean的生命周期,对于生命周期,我们主要围绕着bean生命周期控 制 来讲解: 首先理解下什么是生命周期? 从创建到消亡的完整过程,例如人从出生到死亡的整个过程就是一个生命周期。 bean生命周期是什么? bean对…

C++ | 说说类中的static成员

【概念】:声明为static的类成员称为类的静态成员,用static修饰的成员变量,称之为静态成员变量;用static修饰的成员函数,称之为静态成员函数。静态成员变量一定要在类外进行初始化 文章目录 一、面试题引入二、static特…

5个实用的JavaScript原生API

本文带来5个难得一见的JavaScript原生API,为我们的前端开发带来意想不到的便利。 1. getBoundingClientRect() Element.getBoundingClientRect() 方法返回一个 DOMRect 对象,该对象提供有关元素大小及其相对于视口的位置的信息。 domRect element.ge…

Java笔记_11(常用API)

Java笔记_11 一、常用的API1.1、MathMath练习 1.2、System1.3、Runtime1.4、Object1.5、浅克隆、深克隆1.6、对象工具类的Objects1.7、BigInteger(大整数)1.8、BigDecimal(大小数) 二、正则表达式2.1、正则表达式基础知识2.2、正则…

关于WordPress的20个有趣事实

时值 2022 年,互联网格局和 WordPress 的流行发生了重大变化。COVID-19 流行几乎影响到人类生存的方方面面,包括我们的互联网习惯,这也不例外。 到 2022 年,我们在家工作的人数显着增加,下岗或发现自己有更多空闲时间…

Python基础实战3-Pycharm安装简介

Pycharm下载、安装与使用 1.打开pycharm官网:下载 PyCharm: Python IDE for Professional Developers by JetBrains 2.选择自己对应的操作系统,点击Download,默认是最新版本,想安装其他版本可以选择Other versions下载…

【iOS】—— Masonry源码学习(浅看,未完)

Masonry 文章目录 MasonryNSLayoutConstraint用法Masonry源码 Masonry在我们之前的学习中是一个非常有用的第三方库。 Masonry是一种基于Objective-C语言的轻量级布局框架,它可以简化iOS应用程序中的自动布局任务。Masonry提供了一个方便的API,可以编写更…

Kubernetes Service、Ingress

Service(4层负载均衡器) 1、K8S 可以保证任意 Pod 挂掉时自动从任意节点启动一个新的Pod进行代替,以及某个Pod超负载时动态对Pod进行扩容。每当 Pod 发生变化时其 IP地址也会发生变化,且Pod只有在K8S集群内部才可以被访问&#xf…

Flink高手之路4-Flink流批一体

文章目录 Flink高手之路4-Flink流批一体API开发一、流批一体相关的概念1.数据的时效性2.流处理和批处理1)批处理2)流处理3)两者对比 3.流批一体API4.流批一体的编程模型 二、Data Source1.预定义的Source1)基于集合的Sources(1)API(2)演示 2)基于文件的Source(1)API(2)演示 3)基…

2023.4.19 + 4.20

文章目录 String类1:介绍:2:String类实现了很多的接口:3;String类常用构造器4:不同方式创建String类对象的区别(1)直接赋值的方式(2)常规new的方式&#xff0…

【筛质数】——朴素筛,埃式筛,欧拉筛

题目描述: 题目分析: 这道题可以用,朴素筛,埃氏筛,欧拉筛来写。 普通筛: 时间复杂度:O(n logn) 时间复杂度太高,会超时的!!(9/10) #…

Keil5----显示空白符和设置使用空白格表示Tab键

一、Keil5界面----显示空白符 首先打开Keil5-MDK界面,然后按照下面步骤操作。 步骤1:点击 Edit(编辑),然后点击 Configuration(配置) 步骤2:勾选 View White Spaces(查看空白) 步骤3:显示设置后的结果 具体显示结果分…

Git添加SSH密钥本地仓库上传远程GitHub库

1、前言 现在想要从本地设备将本地仓库上传到GitHub上需要用到SSH密钥,接下来讲解大致的步骤,本文默认读者已经掌握基本的Git知识 2、详细步骤 2.1 创建密钥 在本地项目仓库根目录下,输入下面的命令: ssh-keygen -t rsa命令输…

深度学习 Day 31——YOLOv5-Backbone模块实现

深度学习 Day 31——YOLOv5-Backbone模块实现 文章目录 深度学习 Day 31——YOLOv5-Backbone模块实现一、前言二、我的环境三、什么是YOLOv5-Backbone模块?四、搭建包含Backbone模块的模型1、模型整体代码2、模型每一部分详解3、模型详情 五、模型训练六、最终结果1…

计算机|网页设计 |七大罪动漫主题|作品分享

文章目录 一、主题介绍二、截图展示三、源代码获取 一、主题介绍 计算机|网页设计 |七大罪动漫主题|作品分享 一个关于七大罪动漫主题的网页设计。共4页 图片文字都可修改! 二、截图展示 三、源代码获取 本次的分享就到这里啦&…

双指针【算法推导、背模板】——最长连续不重复子序列

799. 最长连续不重复子序列 - AcWing题库 通常情况双指针就是需要将O(N^2^)&#xff0c;利用某些单调性质实现O(N) 通用代码模板 for(int i 0 , j 0; i < n ; i ){while(j < i && check(i , j ) ) j ;// 需要处理的逻辑 }check判断是否构成 算法推导 题目中…