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条重命名的记录

Screen Shot 2018-10-04 at 01.21.58.png

执行git reset —soft HEAD~

Screen Shot 2018-10-04 at 01.25.45.png

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

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

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

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

Screen Shot 2018-10-04 at 01.30.04.png

接下来使用git reset HEAD~

Screen Shot 2018-10-04 at 01.36.57.png

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

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

add, commit还原v3

最后git reset —hard HEAD~

Screen Shot 2018-10-04 at 01.41.46.png

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

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 一、电脑本地初始化一个仓库 1. git init: 初始化一个电脑上本地仓库 终端进入项目目录,输入: 该命令将...
    dragon_li阅读 3,117评论 1 4
  • 先简单说一下,在提交到远程库之前我们使用git reset 命令完全可以满足我们 撤销操作的需求,如果操作已经提交...
    悟_空阅读 28,480评论 0 7
  • 通过前面两篇 git 的相关介绍(花10分钟开始使用Git,和精通Git不得不了解的基本概念),相信此时你应该能够...
    JeffreyLi阅读 1,455评论 2 21
  • 是谁在你难过的时候安慰你,是谁在你考的不好的时候说下次你一定能考好,是谁为你这样的付出,那就是我们的父母!...
    全能宇璨阅读 207评论 0 0

友情链接更多精彩内容