【git 使用】超级好用的 git reset 和 git revert 功能对比和使用方法

首先你要知道 git 区分暂存区和工作区,如果你用过 sourcetree 你就会知道

git reset 超级好用

git reset 命令用于将当前分支的 HEAD 指针移动到指定的提交,并且可以选择性地修改工作区和暂存区的状态。git reset 命令有几种常用的用法,主要包括:

  1. git reset --soft <commit-id>: 被 reset 的提交会放到暂存区,暂存区原来的内容不会变化,同时不影响工作区;这个选项通常用于撤销之前的提交,但保留更改以供稍后提交。        
    1. 可以通过 git log 查看 id,git 基于指定的提交 id 来移动 head 指针,并且撤销这个提交之后的所有更改
    2. 可以使用 head 替换提交 id 代表撤销最近一次提交
  2. git reset --mixed head~n:  清空暂存区,被 reset 的提交会放到工作区,并和当前工作区的改动进行合并,有相同的改动,以工作区的改动为准,即不改动工作区的状态;这意味着之前的提交所做的更改都会被放到工作区。【reset 不增加参数, 默认使用mixed
    1. n 代表相对于你当前 head 指针的偏移量
    2. 可以是任何数字,1 代码最近一次提交,2 代码最近 2 次提交,以此类推
    3. 但是 n 如果大于所有提交的数量,就会报错
    4. 不可以不写 ~n,至少是 ~1,不信你试试
    5. 可以使用这个 reset 命令 撤销 git add 的操作,也就是把暂存区的文件放回工作区
  3. git reset --hard head~n: reset 之后暂存区和工作区状态都会被清空,会丢弃之前的提交的内容,所以不要用!!很危险,除非使用 git reflog 能找回来,但是 git reflog 有保存期限,时间久了 reflog 的内容也会清理,所以就永远找不到了。

git revet 功能

git revert 命令用于撤销一个或多个提交所做的更改,并创建一个新的提交来记录撤销的操作

  1. git log: 使用 git log 查看提交历史,确定需要撤销的提交的ID
  2. git revert <commit-id>:指定要撤销的提交 ID,会创建一个新提交并将所做的更改撤销掉
    1. :
  3. git revert head: 撤销最近一次提交
  4. git revert <commit-id1>..<commit-id2> :撤销多个提交,可以指定一个范围
  5. 解决冲突(如果有): 在执行 git revert 命令时,如果发生了冲突(例如,撤销的提交与当前分支上的其他更改冲突),Git 会提示你解决冲突。解决完冲突后,可以使用 git add 命令将解决后的文件标记为已解决,然后执行 git revert --continue 完成撤销操作。
  6. 提交撤销的更改: 最后,执行 git revert --continue 完成撤销操作,并将撤销的更改作为一个新的提交提交到仓库中。
  7. 如果你不想继续撤销操作,可以执行 git revert --abort 命令来取消撤销操作。

使用 git revert 命令可以安全地撤销提交,并且不会修改提交历史,因此适合在公共分支上使用。

git reset 和 git revert 对比

  1. git reset:

    • git reset 主要用于修改分支的 HEAD 指针,可以将分支的 HEAD 指针移动到指定的提交,并且可以选择性地修改暂存区和工作区的状态。
    • git reset 常用于本地分支操作,它会修改分支的提交历史,因此在团队协作中应谨慎使用,避免造成提交历史混乱。
    • git reset 通常用于撤销已提交的更改,或者将暂存区和工作区的状态回退到之前的状态。
  2. git revert:

    • git revert 用于撤销一个或多个提交所做的更改,并且会创建一个新的提交来记录撤销的操作。
    • git revert 不修改分支的提交历史,而是在原来的提交历史上创建一个新的撤销提交,因此它更适合用于公共分支上的撤销操作,不会影响其他开发者的提交历史。
    • git revert 通常用于撤销已经发布到公共分支的提交,或者撤销错误的提交并保留提交历史的完整性。

总的来说,git reset 用于修改分支的提交历史和工作区状态,而 git revert 用于创建一个新的撤销提交来记录撤销的操作,不修改提交历史。选择使用哪个命令取决于具体的情况和需求。

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

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

相关文章

20-k8s中pod的调度-nodeSelector节点选择器

一、概念 我们先创建一个普通的deploy资源&#xff0c;设置为10个副本 [rootk8s231 dns]# cat deploy.yaml apiVersion: apps/v1 kind: Deployment metadata: name: dm01 spec: replicas: 10 selector: matchLabels: k8s: k8s template: metadata: …

【Java EE初阶二十】关于http(一)

1. 初识http HTTP 最新的版本应该是 HTTP/3.0&#xff0c;目前大规模使用的版本 HTTP/1.1&#xff1b; 下面来简单说明一下使用 HTTP 协议的场景: 1、浏览器打开网站 (基本上) 2、手机 APP 访问对应的服务器 (大概率) 前面的 TCP与UDP 和http不同&#xff0c;HTTP 的报文格式&a…

Mysql数据库主从集群从库Slave因为RelayLog过多过大引起服务器硬盘爆满生产事故实战解决

Mysql数据库主从集群从库slave因为RelayLog过多过大引起从库服务器硬盘爆满生产事故实战解决 一、MySQL数据库主从集群概念 MySQL数据库主从集群是一种高可用性和读写分离的数据库架构&#xff0c;它基于MySQL的复制&#xff08;Replication&#xff09;技术来同步数据。在主…

一文读懂组态图和组态软件,最浅显的解读。

一、什么是组态图 组态图是指在工业自动化领域中&#xff0c;用来描述和展示控制系统中各个组件之间关系和工作流程的图形化表示方法。它是一个系统的框架图&#xff0c;通过图形符号和连接线&#xff0c;将各个组件&#xff08;如传感器、执行器、控制器等&#xff09;以及它…

unity 使用VS Code 开发,VS Code配置注意事项

vscode 对应的插件&#xff08;unity开发&#xff09; 插件&#xff1a;.Net Install Tool,c#,c# Dev Kit,IntelliCode For C# Dev Kit,Unity,Unity Code Snippets 本人现在是用了这些插件 unity需要安装Visual Studio Editor 1、.Net Install Tool 设置 需要在设置里面配置…

【Java】数据类型与变量

1.数据类型 在Java中数据类型主要分为两类&#xff1a;基本数据类型和引用数据类型。 基本数据类型有四类八种&#xff1a; 四类&#xff1a;整型、浮点型、字符型以及布尔型八种&#xff1a; 注意&#xff1a;不论是在16位系统还是32位系统&#xff0c;int都占用4个字节&am…

HTTP 请求 400错误

问题 HTTP 请求 400错误 详细问题 客户端发送请求 public static UserInfo updateUserInfo(UserInfo userInfo) {// 创建 OkHttpClient 对象OkHttpClient client new OkHttpClient();// 创建请求体MediaType JSON MediaType.parse("application/json; charsetutf-8&…

【微服务生态】Docker

文章目录 一、基础篇1. 简介2. 下载与安装3. 常用命令3.1 帮助启动类3.2 镜像命令3.3 容器命令 4. Docker 容器数据券5. Docker 镜像5.1 commit 生成镜像5.2 Docker Registry5.3 发布镜像 6. Docker 常规安装软件 二、高级篇1. Dockerfile1.1 概述1.2 基础知识1.3 Dockerfile常…

【C++航海王:追寻罗杰的编程之路】vector

目录 1 -> vector的介绍及使用 1.1 -> vector的介绍 1.2 -> vector的使用 1.2.1 -> vector的介绍 1.2.2 -> vector iterator的使用 1.2.3 -> vector空间增长问题 1.2.4 -> vector的增删查改 1.2.5 -> vector迭代器失效问题 2 -> vector的深…

css3的var()函数

css3的var()函数 变量要以两个连字符--(横杆)(减号)为开头 变量可以在:root{}中定义, :root可以在css中创建全局样式变量。通过 :root本身写的样式&#xff0c;相当于 html&#xff0c;但优先级比后者高。 在CSS3中&#xff0c;var()函数是一个用于插入CSS自定义属性&#xff…

突破性进展!加州大学伯克利分校提出Causal Transformer模型,实现人形机器人通过强化学习适应真实世界人形运动

人形机器人具有模仿人类行为和形态的能力&#xff0c;可以胜任一些复杂、危险或单调的工作。除却在传统的工业生产线和仓储物流领域帮助解决劳动力短缺问题&#xff0c;在医疗、教育、家庭服务等多个领域人形机器人也具有巨大应用潜力。 然而&#xff0c;由于智能化水平仍有待…

第三十六天| 435. 无重叠区间、763.划分字母区间、56. 合并区间

Leetcode 435. 无重叠区间 题目链接&#xff1a;435 无重叠区间 题干&#xff1a;给定一个区间的集合 intervals &#xff0c;其中 intervals[i] [starti, endi] 。返回 需要移除区间的最小数量&#xff0c;使剩余区间互不重叠 。 思考&#xff1a;贪心法。和452 用最少数量的…

数据库的备份模式(完全备份,增量备份,差异备份)

数据库的备份 备份原因 数据的丢失 数据的删除 备份目标 数据的一致性 数据的可用性 备份技术 物理备份/冷备份 直接复制数据库文件&#xff0c;适用于大型数据库环境&#xff0c;不受存储引擎的限制&#xff0c;但不能恢复到不同的MySQL版本。 常用的冷备份工具 ta…

【Java大数据期末】银行管理系统(MySQL数据库)

诚接C语言、C、Java、Python、HTML、JavaScript、vue、MySQL相关编程作业&#xff0c; 标价10-20每份&#xff0c;如有需要请加文章最下方QQ。 本文资源&#xff1a;https://download.csdn.net/download/weixin_47040861/88850902https://download.csdn.net/download/weixin_4…

Jmeter实现阶梯式线程增加的压测

安装相应jmeter 插件 1&#xff1a;安装jmeter 管理插件&#xff1a; 下载地址&#xff1a;https://jmeter-plugins.org/install/Install/&#xff0c;将下载下来的jar包放到jmeter文件夹下的lib/ext路径下&#xff0c;然后重启jmeter。 2&#xff1a;接着打开 选项-Plugins Ma…

《Java 简易速速上手小册》第8章:Java 性能优化(2024 最新版)

文章目录 8.1 性能评估工具 - 你的性能探测仪8.1.1 基础知识8.1.2 重点案例&#xff1a;使用 VisualVM 监控应用性能8.1.3 拓展案例 1&#xff1a;使用 JProfiler 分析内存泄漏8.1.4 拓展案例 2&#xff1a;使用 Gatling 进行 Web 应用压力测试 8.2 JVM 调优 - 魔法引擎的调校8…

图的遍历(广度优先遍历BFS,深度优先遍历DFS)

目录 图的遍历概念&#xff1a; 图的广度优先遍历&#xff08;BFS&#xff09;&#xff1a; 代码实现如下&#xff1a; 测试如下&#xff1a; 注意&#xff1a; 图的深度优先遍历&#xff08;DFS&#xff09;&#xff1a; 代码实现如下&#xff1a; 测试如下&#xff1…

SSL证书怎么申请最合适

SSL证书对于网络安全的作用毋庸置疑&#xff0c;作为数字证书的一种&#xff0c;皆是由权威数字证书机构验证网站身份后进行颁发&#xff0c;可以实现浏览器和网站服务器数据加密传输。而网站安装部署SSL证书后会在浏览器页面显示安全锁标志&#xff0c;而后数据传输协议则从ht…

Swift Combine 使用 print 操作符调试管道 从入门到精通二十四

Combine 系列 Swift Combine 从入门到精通一Swift Combine 发布者订阅者操作者 从入门到精通二Swift Combine 管道 从入门到精通三Swift Combine 发布者publisher的生命周期 从入门到精通四Swift Combine 操作符operations和Subjects发布者的生命周期 从入门到精通五Swift Com…

【数据结构】每天五分钟,快速入门数据结构(一)——数组

目录 一.初始化语法 二.特点 三.数组中的元素默认值 四.时间复杂度 五.Java中的ArrayList类 可变长度数组 1 使用 2 注意事项 3 实现原理 4 ArrayList源码 5 ArrayList方法 一.初始化语法 // 数组动态初始化&#xff08;先定义数组&#xff0c;指定数组长度&#xf…