git 时光穿梭机

203 阅读1分钟

撤销已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。