热门标签 | HotTags
当前位置:  开发笔记 > 开发工具 > 正文

gitreset与gitrevert的区别

官方文档gitreset[commitid]回退到指定的commit版本,指定commit版本之后的commit都将被重置gitrevert[commitid]撤销指定commit
官方文档

git reset [commitid]

回退到指定的commit版本,指定commit版本之后的commit都将被重置

git revert [commitid]

撤销指定commit版本的操作,这个操作也会生成一个新commit,指定commit版本之前及之后的操作均不受影响

实际操作

创建测试文件

现在项目中有两个文件x.txty.txt,编辑这两个文件,每修改一个文件后都进行一次commit

1、新建空文件,修改文件,查看commit log

将下面信息写入x.txt

this is x!

查看commit log

《git reset与git revert的区别》

将下面信息写入y.txt

this is y!

查看commit log

《git reset与git revert的区别》

最终文件内容及commit log

《git reset与git revert的区别》

对比reset与revert

1、git reset

为了更明显的对比,我们使用git reset --hard [commitid]来回滚到指定版本,因为--hard选项会在回滚的同时撤销全部对文件的修改

执行命令,回滚到最初版本

git reset --hard 911c8b68c489c93ff7599d7df521457f38ca7f3c

查看文件内容及commit log

《git reset与git revert的区别》

可以看到,现在我们已经回滚到了911c8b68c489c93ff7599d7df521457f38ca7f3c版本,在该版本后所有的修改都被撤销,同时commit也回退到该版本

2、git revert

执行命令,撤销对commitid6234f3405a3ed4d847793baa4c6e818040a3c190的修改

git revert 6234f3405a3ed4d847793baa4c6e818040a3c190

查看文件内容及commit log

《git reset与git revert的区别》

可以看到git revert操作撤销了刚刚对x.txt文件的修改,同时产成了一个新的commit,x.txt文件内容变为空,但y.txt文件的内容没有变动

总结

git reset操作会将版本回退至指定的commit,指定commit后的操作都将被撤销
git revert则撤销指定commit的修改,同时生成一个新的commit

延伸

git revert还支持同时撤销连续的几个commit的修改

git revert (commit_older..commit_newer]

commit_oldercommit_newer间的操作都将被撤销,注意:旧的commit在前边,commit_older的操作不会被撤销,commit_newer会被撤销


推荐阅读
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • 本文将介绍如何使用 Go 语言编写和运行一个简单的“Hello, World!”程序。内容涵盖开发环境配置、代码结构解析及执行步骤。 ... [详细]
  • 本文探讨了Hive中内部表和外部表的区别及其在HDFS上的路径映射,详细解释了两者的创建、加载及删除操作,并提供了查看表详细信息的方法。通过对比这两种表类型,帮助读者理解如何更好地管理和保护数据。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • PHP 5.2.5 安装与配置指南
    本文详细介绍了 PHP 5.2.5 的安装和配置步骤,帮助开发者解决常见的环境配置问题,特别是上传图片时遇到的错误。通过本教程,您可以顺利搭建并优化 PHP 运行环境。 ... [详细]
  • 本文介绍了Java并发库中的阻塞队列(BlockingQueue)及其典型应用场景。通过具体实例,展示了如何利用LinkedBlockingQueue实现线程间高效、安全的数据传递,并结合线程池和原子类优化性能。 ... [详细]
  • 本文介绍了如何使用JQuery实现省市二级联动和表单验证。首先,通过change事件监听用户选择的省份,并动态加载对应的城市列表。其次,详细讲解了使用Validation插件进行表单验证的方法,包括内置规则、自定义规则及实时验证功能。 ... [详细]
  • 本文详细介绍了如何使用 Yii2 的 GridView 组件在列表页面实现数据的直接编辑功能。通过具体的代码示例和步骤,帮助开发者快速掌握这一实用技巧。 ... [详细]
  • 探讨一个显示数字的故障计算器,它支持两种操作:将当前数字乘以2或减去1。本文将详细介绍如何用最少的操作次数将初始值X转换为目标值Y。 ... [详细]
  • Android LED 数字字体的应用与实现
    本文介绍了一种适用于 Android 应用的 LED 数字字体(digital font),并详细描述了其在 UI 设计中的应用场景及其实现方法。这种字体常用于视频、广告倒计时等场景,能够增强视觉效果。 ... [详细]
  • RecyclerView初步学习(一)
    RecyclerView初步学习(一)ReCyclerView提供了一种插件式的编程模式,除了提供ViewHolder缓存模式,还可以自定义动画,分割符,布局样式,相比于传统的ListVi ... [详细]
  • 本文详细介绍了如何在 Spring Boot 应用中通过 @PropertySource 注解读取非默认配置文件,包括配置文件的创建、映射类的设计以及确保 Spring 容器能够正确加载这些配置的方法。 ... [详细]
  • 2023年京东Android面试真题解析与经验分享
    本文由一位拥有6年Android开发经验的工程师撰写,详细解析了京东面试中常见的技术问题。涵盖引用传递、Handler机制、ListView优化、多线程控制及ANR处理等核心知识点。 ... [详细]
  • 在现代网络环境中,两台计算机之间的文件传输需求日益增长。传统的FTP和SSH方式虽然有效,但其配置复杂、步骤繁琐,难以满足快速且安全的传输需求。本文将介绍一种基于Go语言开发的新一代文件传输工具——Croc,它不仅简化了操作流程,还提供了强大的加密和跨平台支持。 ... [详细]
  • 网络运维工程师负责确保企业IT基础设施的稳定运行,保障业务连续性和数据安全。他们需要具备多种技能,包括搭建和维护网络环境、监控系统性能、处理突发事件等。本文将探讨网络运维工程师的职业前景及其平均薪酬水平。 ... [详细]
author-avatar
梨依籽_852
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有