为了账号安全,请及时绑定邮箱和手机立即绑定

Git撤销操作

标签:
Git

参考资料:Git文档_重置揭秘

文档看了好几遍,还是很混乱。把命令行敲一遍一下子就清晰了。写代码还真是个实践出真知的活儿

git撤销操作

命令功能
git commit --amend将暂存区的文件提交。此次提交会代替上一次提交的结果,最终只有一个提交
git reset --soft移动HEAD的指向,索引不变,工作目录不变
git reset --mixed默认行为,索引变,工作目录不变
git reset --hard如果暂存未提交会丢失。索引变,工作目录变
git reset <filename>实质上是将文件从HEAD复制到索引中,与add相反
git revert将你提交的变更逆向应用到一个新的提交中
git branch --<filename>将文件还原成上次提交的样子

首先,我们创建一个本地库并初始化

创建文件v1然后add,commit

重命名v1为v2然后add, commit

重命名v2为v3然后add, commit

git log有3条重命名的记录

webp

Screen Shot 2018-10-04 at 01.21.58.png

执行git reset —soft HEAD~

webp

Screen Shot 2018-10-04 at 01.25.45.png

可以看到文件名还是v3,索引区为v2 -> v3, git log只有2条记录

相当于回滚了最后一次commit的提交

工作区、索引区的数据不变

然后add,commit 还原v3,生成一条新的v3记录

webp

Screen Shot 2018-10-04 at 01.30.04.png

接下来使用git reset HEAD~

webp

Screen Shot 2018-10-04 at 01.36.57.png

相当于回滚了最后一次commit, add的提交

工作区不变,索引区回滚至v2的状态

add, commit还原v3

最后git reset —hard HEAD~

webp

Screen Shot 2018-10-04 at 01.41.46.png

可以看到,测试文件变成v2,这说明工作区也回滚了,索引区也清理了,这种方式有销毁数据的可能,慎用。



作者:饥人谷_chen
链接:https://www.jianshu.com/p/eb0bed933f73


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
全栈工程师
手记
粉丝
228
获赞与收藏
996

关注作者,订阅最新文章

阅读免费教程

  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消