赞
踩
最近复习了一下git相关知识点,关于还原的问题,我发现多数都是只有回退,而没有回退错以后的前进操作。
想学?我教你啊
一个文件夹,交给git管理即可,写一段最原始的内容,这里我把一串字符串"这是张三"写到A.txt记事本中,add--->commit,文件存放到仓库中(关于add和commit提交这里就不做解释, 可以参考其他文章),到此,准备工作完成
比如我在文件中多加了一句话:“追加李四 ”,但是在add到暂存区之前,我后悔了,不想加这句话,查看状态,红色M就是modify修改状态
这种情况最好办,直接git checkout -- A.txt
git checkout -- A.txt
再次查看,已经恢复成我修改前的样子了
还是用上面的例子"追加李四",并add,这时候的修改状态M会变成绿色,说明修改好了已经放到暂存区了
这时候想反悔,使用git reset head,reset顾名思义,重置,即重置恢复到当前版本,因为还没有commit提交,所以当前版本的内容应该还是“这是张三”
git reset head
执行后,查看这时候的状态git status -s神奇的绿色状态M变成了红色状态M,即恢复成了还没有add时候的样子,此时的样子就和情况1是一模一样的了
那就按着情况1的样子git checkout -- A.txt就可以恢复
还是以“追加李四”为例,add--->commit的操作都做了以后,说明这时候的仓库就多了一个版本了(只要commit提交一次就会产生一个版本),查看现在仓库中都有什么版本,执行下面的命令
git log --oneline
此时仓库有2个版本,HEAD所在的就是当前版本,就是我最近提交的。但是我又又又后悔了,不该提交的,我想回到第一次提交的样子,怎么办?
git reset head^
和情况2很像,但是多了个 "^" 符号,意思是返回到上一个版本
注:因为我这个就2个版本,所以上一个版本head^就可以,如果版本比较多,想返回上上个版本,就是head^^,以此类推
这时候再查看状态git status -s,又神奇的回到了修改后,没add的状态了,又回到了情况1的样子
剩下就简单了,按情况一的样子操作一遍就好
到此,回退的情况都介绍完,已经回退到了以前的旧版本,不管怎么改,怎么add,怎么commit都没事,都是可以回退回去到最开始的状态
但是!我又又又又后悔了,还是想用最新版本,这就很烦人了,但是也很好解决,先查看当前的版本
git log --oneline
发现没,明明提交了2次,回退到了旧版本之后,新版本的就不见了?这里不用担心,只要提交到了仓库,在本地就一定会有记录,使用下面命令查看,可以看到所有提交的信息,记住前部的commit_id,后面恢复时候要用到,先执行下面命令查看
git reflog
这样就可以看到所有提交的记录了,我们要从第一次提交的旧版本,升级到第二次提交的新版本去,前部的commit_id号就可以发挥作用了,执行
git reset --hard '5c3cc36'
这就去到最新版本了,git log --oneline查看一下
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。