点击上方“Java精选”,选择“设为星标”

别问别人为什么,多问自己凭什么!

下方有惊喜,留言必回,有问必答!

每一天进步一点点,是成功的开始...

Git 版本管理时,往往需要撤销某些操作。

本文介绍几种最主要的情况,给出详细的解释。

一、撤销提交

一种常见的场景是,提交代码以后,你突然意识到这个提交有问题,应该撤销掉,这时执行下面的命令就可以了。

$ git revert HEAD

上面命令的原理是,在当前提交后面,新增一次提交,抵消掉上一次提交导致的所有变化。它不会改变过去的历史,所以是首选方式,没有任何丢失代码的风险。

git revert 命令只能抵消上一个提交,如果想抵消多个提交,必须在命令行依次指定这些提交。比如,抵消前两个提交,要像下面这样写。

$ git revert [倒数第一个提交] [倒数第二个提交]

git revert 命令还有两个参数。

  • --no-edit:执行时不打开默认编辑器,直接使用 Git 自动生成的提交信息。

  • --no-commit:只抵消暂存区和工作区的文件变化,不产生新的提交。

二、丢弃提交

如果希望以前的提交在历史中彻底消失,而不是被抵消掉,可以使用 git reset 命令,丢弃掉某个提交之后的所有提交。

推荐下几个月熬夜整理的近 10000+ 面试资料大全:https://gitee.com/yoodb/eboo‍ks

$ git reset [last good SHA]

git reset 的原理是,让最新提交的指针回到以前某个时点,该时点之后的提交都从历史中消失。

默认情况下,git reset 不改变工作区的文件(但会改变暂存区),--hard 参数可以让工作区里面的文件也回到以前的状态。

$ git reset --hard [last good SHA]

执行 git reset 命令之后,如果想找回那些丢弃掉的提交,可以使用 git reflog 命令,具体做法参考这里。不过,这种做法有时效性,时间长了可能找不回来。

三、替换上一次提交

提交以后,发现提交信息写错了,这时可以使用 git commit 命令的 --amend  参数,可以修改上一次的提交信息。

$ git commit --amend -m "Fixes bug #42"

它的原理是产生一个新的提交对象,替换掉上一次提交产生的提交对象。

这时如果暂存区有发生变化的文件,会一起提交到仓库。所以,--amend 不仅可以修改提交信息,还可以整个把上一次提交替换掉。

四、撤销工作区的文件修改

如果工作区的某个文件被改乱了,但还没有提交,可以用 git checkout 命令找回本次修改之前的文件。

$ git checkout -- [filename]

它的原理是先找暂存区,如果该文件有暂存的版本,则恢复该版本,否则恢复上一次提交的版本。

推荐下自己做的 Spring boot 的实战项目:
https://gitee.com/yoodb/jing-xuan‍

注意,工作区的文件变化一旦被撤销,就无法找回了。

五、从暂存区撤销文件

如果不小心把一个文件添加到暂存区,可以用下面的命令撤销。

$ git rm --cached [filename]

上面的命令不影响已经提交的内容。

六、撤销当前分支的变化

你在当前分支上做了几次提交,突然发现放错了分支,这几个提交本应该放到另一个分支。

# 新建一个 feature 分支,指向当前最新的提交
# 注意,这时依然停留在当前分支
$ git branch feature# 切换到这几次提交之前的状态
$ git reset --hard [当前分支此前的最后一次提交]# 切换到 feature 分支
$ git checkout feature

上面的操作等于是撤销当前分支的变化,将这些变化放到一个新建的分支。

作者:阮一峰

https://url.cn/5NLK2pC

公众号“Java精选”所发表内容注明来源的,版权归原出处所有(无法查证版权的或者未注明出处的均来自网络,系转载,转载的目的在于传递更多信息,版权属于原作者。如有侵权,请联系,笔者会第一时间删除处理!

------ THE END ------

精品资料,超赞福利!

>Java精选面试题<
3000+ 道面试题在线刷,最新、最全 Java 面试题!

期往精选  点击标题可跳转

【260期】PageHelper 使用 ThreadLocal 的线程复用问题,你用对了吗?

【261期】为什么 BigDecimal 类不能使用 equals() 方法做等值比较?

【262期】面试官:jwt 是什么?java-jwt 呢?懵逼了。。。

【263期】面试官问:假设有一千万数据,怎么快速查询?

【264期】面试官问:Spring Boot 启动时自动执行代码方式有哪几种?解释一二!

【265期】面试官:列举 8 种 Docker 应用场景,你对哪些有了解?

【266期】面试官问:为什么 SQL 要尽量避免使用 IN 和 NOT IN?

【267期】Spring Boot 如何整合 WebSocket 实现群聊,一对一聊天?

 技术交流群!

最近有很多人问,有没有读者交流群!想知道如何加入?方式很简单,兴趣相投的朋友,只需要点击下方卡片,回复“加群”,即可无套路入交流群!

文章有帮助的话,在看,转发吧!

【268期】不小心将测试代码提交到生产环境,教你 6 种方法秒解决!相关推荐

  1. 代码人入门——生产环境篇

    代码人入门--生产环境篇 本系列博文由泰勒展开氏整理编辑,转载须注明出处. 代码人入门系列 状态 生产环境篇 施工中 生产工具篇 即将出炉 学习方法与资料篇 即将出炉 其他系列 状态 捂脸网人入门系列 ...

  2. Android4清理代码缓存,Android清除应用缓存的两种方法

    第一种 使用ActivityManager中的clearApplicationUserData方法,代码如下: ActivityManager am = (ActivityManager) getSy ...

  3. 不小心删除微信聊天记录怎么恢复?不看看这几种方法怎么行

    聊天记录的删除到恢复的过程确实令人糟心,找不到恢复方法的时候更加糟心,不小心删除微信聊天记录怎么恢复?虽然恢复数据确实很难,但是还是有方法去解决的!小编这就给大家看看这两种方法到底行不行! 方法一:通 ...

  4. python敏感词过滤代码简单代码_Python实现敏感词过滤的4种方法

    在我们生活中的一些场合经常会有一些不该出现的敏感词,我们通常会使用*去屏蔽它,例如:尼玛 -> **,一些骂人的敏感词和一些政治敏感词都不应该出现在一些公共场合中,这个时候我们就需要一定的手段去 ...

  5. 电脑蓝屏代码0x00000050怎么解决?3种方法快速解决

    电脑蓝屏代码0x00000050是Windows系统中常见的一个蓝屏错误,通常是由于操作系统或硬件设备驱动程序的问题导致的.可使用驱动人生推荐的以下3种方法解决. 一.重装驱动程序 电脑蓝屏代码0x0 ...

  6. python杨辉三角代码,python实现杨辉三角的几种方法代码实例

    方法一:迭代 def triangle_1(x): """ :param x: 需要生成的杨辉三角行数 :return: """ trian ...

  7. html中看到php代码_分享查看页面源代码的四种方法

    前端开发人员在浏览网页时,遇到自己喜欢的网页,总想看看代码是怎么写的,也有些人需要对网页源代码进行修改,那你知道怎么查看一个网页的源代码吗?这篇文章就和大家讲讲如何查看源代码,以及不同浏览器的查看源代 ...

  8. Spark操作Hive(开启Kerberos认证)代码提交华为云DAYU的MRS Spark组件--方法流程及注意事项

    背景: 最近在测试华为云DAYU MRS Spark操作Hive的流程,因kerberos认证的问题一直测试失败. 代码示例: val sparkSession = SparkSession.buil ...

  9. 在事件代码中访问类中变量的三种方法

    方法一: 加final 修饰符: 即:在事件处理类中需要访问类变量时,需要加final 方法二:将变量变成类的实例变量,但这种方法扩大了变量的作用范围 public class Helloworld{ ...

最新文章

  1. html5自定义属性作用,html5自定义属性:如何获取自定义属性值(附代码)
  2. GAN在信息检索领域的应用
  3. java保留两位小数
  4. Android float 四舍五入没有入的一个问题
  5. python 怎么爬桌软件数据_如何利用Python爬取并分析红岭创投的数据?
  6. 爬取最好大学网站大学排名
  7. Sina App Engine 介绍
  8. 三款运用二维码分享与预览的原型设计工具
  9. mysql server 5.0安装教程_MySQL Server 5.0安装教程
  10. 前端学习(1848)vue之电商管理系统电商系统的开发模式和技术选型
  11. DevExpress破解和消除弹出框问题
  12. java回调函数的生命_Java的回调函数 - choaklin 的个人空间 - OSCHINA - 中文开源技术交流社区...
  13. 学Python必看,Python中encode(),decode()的本质
  14. C语言:内存字节对齐详解
  15. [sql面试经验] 经典sql面试题及答案第2期
  16. 2022年4月携程暑期实习 搜索推荐算法岗面试题
  17. 微信支付 unmatched order appid and payment appid
  18. LeetCode 263 Ugly Number(丑数)
  19. 【微商】我和99%的人观点不同
  20. 操作系统 - startx/xinit

热门文章

  1. 第二次上机实践项目-项目4-穷举法-换分币
  2. 万向副董肖风:区块链的六大治理机制
  3. 文本分类算法TextCNN原理详解
  4. 国内外有名的居民与商务服务调查研究咨询公司
  5. 2019聊大考研计算机调剂,聊城大学2019考研调剂信息
  6. 书记_《Java程序员,上班那点事》
  7. M9ie浏览器-防关联浏览器的开创者
  8. 学计算机专业开学要买笔记本电脑吗,大学新生开学要不要带笔记本电脑?听一下学长学姐的建议...
  9. 别人写好的爬虫怎么运行_项目申报怎么去写才好
  10. 代码精进之路:从码农到工匠读书笔记