如果用git,想撤销某个版本,怎么办呢?撤销也分多种情况,下面梳理一下这几种情况。
1.先分析第一种情况,工作区中修改了,但是还没有add到暂存区
$ git checkout -- filename
这样就能使工作区中和中央版本库中的代码一致。
2.第二种情况,工作区中修改了,add到了暂存区,但是还没有commit到中央版本库
这个第二种情况又细分两小种情况。
①工作区中add到暂存区后,工作区中没有修改。可以使用 $ git checkout -- filename
②工作区中add到暂存区后,又修改了工作区中的代码,这时工作区和暂存区中的代码是不一致的。如果想让工作区中的代码和暂存区中的一致,直接使用 $git checkout -- filename。如果想撤销掉暂存区中的代码,且将工作区中的代码保持和中央版本库中一致,可以先 $ git reset HEAD filename,然后在使用 $ git checkout --filename。
用命令 $ git reset HEAD filename可以把暂存区的修改撤销掉(unstage),重新放回工作区。还可以使用reset命令将版本退回。
3.工作区中修改了,add到了暂存区,且commit到了中央版本库
这时就需要用reset命令将版本退回了。$ git reset --hard HEAD~1
补充:
$ git checkout -- filename 就是让这个文件回到最近一次git commit或git add时的状态。
其中的两个“-”要加上,否则就是切换分支了
如果推送到远程仓库了,那就真的不能撤销了。