撤销已commit的内容
git reset HEAD^ //默认参数为--mixed
git reset --mixed HEAD^ //撤销commit,并且撤销git add, 不删除工作空间改动代码
git reset --hard HEAD^ //撤销commit,撤销git add, 删除工作空间改动代码
git reset --soft HEAD^ //撤销commit,不撤销git add, 不删除工作空间改动代码
git reset --hard [commit id] //回退到id的那次版本
用git log可以查看提交历史,查找commit id。
当你用$ git reset --hard HEAD^回退后,又想恢复原来的版本,使用
git reflog
查看commit id, 然后再通过
git reset --hard [commit id]
还原。
删除本地所有没提交的修改,恢复到上一次commit或add后的干净状态
git chectout . //撤销工作区的修改全部文件
git checkout -- file //把某个文件在工作区的修改全部撤销
命令git checkout -- readme.txt意思就是,把readme.txt文件在工作区的修改全部撤销,这里有两种情况:
一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;
一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。
总之,就是让这个文件回到最近一次git commit或git add时的状态。
撤销上一次add操作
git reset HEAD <file>
当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD ,然后再git checkout -- file。