【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.mzph.cn/news/691651.shtml

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

相关文章

突破百度地图Web API的配额限制,实现接口调用自由!

声明 本文章中所有内容仅供学习交流,抓包内容、敏感网址、数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系我立即删除! 引言 好久没用百度地图开放平台,最近发现平台调整了接口调用的策略,增加了实名认证,…

STM32 USART详细解读(理论知识)

文章目录 前言一、同步传输和异步传输二、UART协议三、UART硬件结构1.波特率&#xff0c;数据位&#xff0c;校验位&#xff0c;停止位设置2.数据发送流程3.数据接收流程4.中断控制 总结 前言 本篇文章来给大家讲解一下STM32中的USART&#xff0c;USART是STM32中非常重要的一个…

QT多线程应用及代码示例

一.多线程的原理和功能 1.多线程&#xff08;multithreading&#xff09;是指从软件或者硬件上实现多个线程并发执行的技术。 2.多线程的功能和作用主要包括&#xff1a; 提高程序的并发性和效率&#xff1a;多线程可以同时执行多个任务&#xff0c;不同的线程可以同时读写不…

腾讯云助力酒店IT系统上云,实现出海业务的双重优势

潮起潮涌&#xff0c;随着时代浪潮的翻涌&#xff0c;生活处处可见是巨大的变化&#xff0c;衣食住行都有了更多更大的需求&#xff0c;出门旅游观赏当地风景品尝特色美食的前提是要住好&#xff0c;只有休息好了才有更多的精力去游玩。酒店系统的升级上云让登记变得更加便捷&a…

【机器学习笔记】13 降维

降维概述 维数灾难 维数灾难(Curse of Dimensionality)&#xff1a;通常是指在涉及到向量的计算的问题中&#xff0c;随着维数的增加&#xff0c;计算量呈指数倍增长的一种现象。在很多机器学习问题中&#xff0c;训练集中的每条数据经常伴随着上千、甚至上万个特征。要处理这…

【Linux】git操作 - gitee

1.使用 git 命令行 安装 git yum install git 2.使用gitee 注册账户 工作台 - Gitee.com 进入gitee&#xff0c;根据提示注册并登录 新建仓库 仓库名称仓库简介初始换仓库 3.Linux-git操作 进入仓库&#xff0c;选择“克隆/下载” 复制下面的两行命令进行git配置 然后将仓库clo…

教师专业发展的五个阶段

每当人们谈论教师&#xff0c;总会联想到“传道授业解惑”的崇高形象。但教师的专业成长&#xff0c;绝非一蹴而就。今天&#xff0c;就让我们一起探秘教师专业发展的五个阶段&#xff0c;看看一位普通教师是如何历练成为教育行家的。 阶段一&#xff1a;新手摸索期 初入教育行…

走进科学系列之遭遇鬼打墙的OUTLOOK

网管小贾 / sysadm.cc 正值春运&#xff0c;车站里熙熙攘攘、人头攒动。 鲍勃和约瑟夫正在候车室&#xff0c;等待检票。 “嗨&#xff01;约瑟夫&#xff01;快来看看&#xff0c;我的电脑出问题了&#xff01;” “得了吧&#xff0c;马上就要检票上车了&#xff0c;你就不…

调用接口时不时出现 Error: socket hang up

项目场景&#xff1a; 提示&#xff1a;这里简述项目相关背景&#xff1a; 今天采用golang创建了一个http服务&#xff0c;准备对若干接口进行测试。 问题描述 提示&#xff1a;这里描述项目中遇到的问题&#xff1a; 在测试第一个接口时&#xff0c;发现采用postman调用接口…

Ansible yum模块 主要用于软件安装

目录 选项 实例 安装一个tree实例卸载一个 tree 选项 name   #所安装的包的名称 state  #present—>安装&#xff0c; latest—>安装最新的, absent—> 卸载软件。 update_cache  #强制更新yum的缓存 conf_file  #指定远程yum安装时所依赖的配置文件&…

5G车载路由器引领无人驾驶车联网应用

随着无人驾驶技术的不断发展&#xff0c;车联网正逐渐成为实现智能交通的重要组成部分。5G车载路由器将在车联网的应用中起到至关重要的作用&#xff0c;它能够满足无人驾驶应用的低时延、高速率和实时控制等需求&#xff0c;进一步推动无人驾驶车联网技术。 5G路由器具备低时延…

从 AGP 4.1.2 到 7.5.1——XmlParser、GPathResult、QName 过时

新年首发&#xff0c; 去年的问题&#xff0c;今年解决~ 问题 & 排查 1: Task failed with an exception. ----------- * What went wrong: Execution failed for task :app:processCommonReleaseManifest. > org.xml.sax.SAXParseException; lineNumber: 1; columnNu…

【申请体验Sora】OpenAI Red Teaming Network application

网址&#xff1a;https://openai.com/form/red-teaming-network 使用Gmail &#xff0c; 国家选美国 两个问题&#xff1a; Why are you interested in joining the OpenAI Red Teaming Network? I’m eager to experience the powerful allure of Sora, which I believe wi…

postgresql 文件结构(一) 数据库、表对应的文件

1、问题 甲方要求提供数据库数据量大小&#xff0c;由于各个业务数据库共用一个postgres&#xff0c;因此想把每个数据库占用的空间都统计一下。 2、查找物理存储文件目录 如下图所示&#xff0c;可以查询表、库的物理存储文件名称 -- 查询表对应的文件 select oid,relname…

leetcode 01背包问题

典型的01背包问题可以暴力求解&#xff0c;直接将所有可能全部遍历然后挑选符合条件的即可&#xff0c;但这样时间复杂度过高&#xff0c;有2的n次方。 所以我们在这里采用动态规划的方式来做&#xff0c;并且&#xff0c;我们可以采用二维数组或者一维数组来做。 二维数组&a…

供水管网管道爆管事故发生原因及控制措施

经济的快速发展及城镇化的不断推进使得我国的城镇数量及规模都在不断地扩大。供水系统是城镇基础设施中 的重要的一环。现今在我国各城市中已经建立了相对完善的城市供水管网体系。但是在供水管网运行过程中爆管问题时 有发生&#xff0c;从而对城市用水的正常供应以及民众的正…

Redis 缓存(Cache)

什么是缓存 缓存(cache)是计算机中的一个经典的概念在很多场景中都会涉及到。 核心思路就是把一些常用的数据放到触手可及(访问速度更快)的地方&#xff0c;方便随时读取。 这里所说的“触手可及”是个相对的概念 我们知道&#xff0c;对于硬件的访问速度来说&#xff0c;通常…

vue3实现瀑布流布局组件

先看效果图 直接上代码 utils.js // 用于模拟接口请求 export const getRemoteData (data 获取数据, time 2000) > {return new Promise((resolve) > {setTimeout(() > {console.log(模拟获取接口数据, data)resolve(data)}, time)}) }// 获取数组随机项 export…

给label-studio 配置sam(segment anything)ml 记录

给label-studio 配置sam&#xff08;segment anything&#xff09;ml 后端记录 配置ml后台下载代码下载模型文件创建环境模型转换后端服务启动 配置label-studio 前端配置模型后端连接配置标注模板标注界面使用 参考链接 配置ml后台 下载代码 git clone https://github.com/H…

AT24C02(I2C总线)通信的学习

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、存储器介绍二、AT24C02芯片二、I2C总线I2C电路规范I2C时序结构I2C数据帧AT24C02数据帧 总结 前言 学习AT24C02(I2C总线)芯片 一、存储器介绍 RAM&#xf…