专栏首页技术面面观撤销本地提交-每天三分钟玩转Git (5)

撤销本地提交-每天三分钟玩转Git (5)

让我们来偷偷diss老板。——编程三分钟

第 5 篇

撤销本地提交

上一章我们一起入门学习了git的基本概念git基础操作,包括提交同步代码、使用分支、出现代码冲突的解决办法紧急保存现场和恢复现场的操作。几乎已经足够我们使用Git参加协作开发了。但是在开发的过程中难免会出错,万一一不小心提交提交了不可饶恕的东西,难说会让我们丢掉工作,那怎么办呢。下面让我们一起来diss老板。

先说一句蠢话来diss老板

如果你发现刚刚的操作一不小心commit了,所幸你还没有推送到远程仓库,你可以用reset命令来撤消你的这次提交。

reset命令的作用:重置HEAD(当前分支的版本顶端)到另外一个commit。

我们来创建一个文件,并附带提交信息[+]骂了我的boss,达到下图的效果

我们使用以下命令达到这样的效果:

  1. 创建to_boss.txt文件,并向其写入了my boss is a bad guy!
  2. git add然后status查看新文件已经加入跟踪
  3. git commit提交了这次的修改

撤消了本次提交

好了,刚刚我们“不小心”diss了我们的老板,要是被发现就完了,所幸还没有push,要快点撤消这些提交,再拍下马屁才行。

先撤销掉现在的提交达到下图的效果

我们使用以下命令达到这样的效果:
  1. git reset --soft head^撤消了本次提交,将工作区恢复到了提交前但是已经add的状态
  2. to_boss.txt的内容改成了my boss is a good boy!

好了,我们现在改成怕马屁的话了,虽然我并不赞成大家给老板拍马屁,但是刚刚骂老板的话实在把人吓得不轻。我们赶快把他提交掉吧,一会老板看见估计要给我加工资了。

修改to_boss.txt的内容,同时创建一个提交信息为[+]夸了我的boss的提交,如下图

add然后commit提交

好了,有惊无险,这就是撤消commit的操作。

我们的撤消当前提交的时候往往不希望我们此次提交的代码发生任何丢失只是撤消掉commit的操作,以便我们继续修改文件。

正常我们想达到上图的效果,宝贵的代码放回到暂存区,如果我们是想直接不要了这次commit的全部内容的任何修改那就把git reset --soft head^改成git reset --hard head^,这样你本地修改就彻底丢掉了(一定要小心啊,不然代码白写了),如果真用了想找回来怎么办?我们后面【救命的后悔药】一节会和大家详细讨论。

当然了,你只要开心,不加softhard参数也是安全的(相当于使用了--mixed参数),只不过是撤消以后你的本次修改就会回到add之前的状态,你可以重新检查以后再做修改和commit也可以。

小结

通过今天的三分钟,我们学会了如下命令

  1. git reset --soft head^ 软撤销,head^是指当前commit,可以改成任意commit id
  2. git reset --hard head^ 硬撤销,彻底丢掉这次提交的全部修改
  3. git reset 不加参数,本次修改就会回到add之前的状态

本文分享自微信公众号 - 编程三分钟(coding3min),作者:小熊爱编程

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-05-08

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 撤销远程提交-每天三分钟玩转Git (6)

    要是我们"不小心"把骂老板的话给提交到远程了,马上其他同事都要看到了,要是被发现就全完了,这个时候我们还来得及撤销吗?

    编程三分钟
  • 版本控制工具——Git常用操作(下)

    摘要:上一集我们一起入门学习了git的基本概念和git常用的操作,包括提交和同步代码、使用分支、出现代码冲突的解决办法、紧急保存现场和恢复现场的操作。学会以后已...

    编程三分钟
  • 实习生的代码被弄丢了!救命的时候绝对用的上——每天三分钟玩转Git (8)

    新来的实习生【悲郭】因为不太熟悉git的使用,总是把自己的代码给弄丢了,这次好了,把辛苦写了一个月的功能全弄丢了。还好我力挽狂澜帮他恢复了过来。下面我们分两种代...

    编程三分钟
  • Git详细教程 – Git版本回退

    通过《Git详细教程 - 初识》、《Git详细教程 – Git的安装》和《Git详细教程 – 版本库的创建和添加内容到版本库》课程,相信大家对Git已经非常熟悉...

    Javanx
  • 【Git实操笔记2】必知习惯和如何版本回退

    良好的习惯会让工作和生活如鱼得水,在使用git的时候有些必知习惯和概念你要get一下,总有些许失误,如:已经提交了不合适的修改到版本库时还没有把自己的...

    用户6543014
  • GitHub代码托管平台提交代码时emoji表情的使用

    沈唁
  • 【Git笔记2】必知习惯和如何版本回退

    良好的习惯会让工作和生活如鱼得水,在使用git的时候有些必知习惯和概念你要get一下,总有些许失误,如:已经提交了不合适的修改到版本库时还没有把自己的...

    小小詹同学
  • Extjs-lesson3

    Ext.js 系列课程笔记「组件」更多精彩文章请关注公众号『Pythonnote』或者『全栈技术精选』

    小闫同学啊
  • EasyNVR RTSP转RTMP-HLS流媒体服务器前端构建之:关于接口调用常见的一些问题(401 Unauthorized)

    在此,基于自身对于EasyNVR接口的调用和一些用户的反馈的问题来对接口的调用进行一下说明:

    EasyNVR
  • Python搭建接口测试自动化框架(一)

    接口测试是测试领域很大的一块,做好接口测试,那么整个平台的基本流程和功能也就调通了。而接口测试自动化不仅可以减轻重复工作的人力成本,也可以提高测试质量和准确率。...

    周萝卜

扫码关注云+社区

领取腾讯云代金券