好记性不如烂笔头。
一、回退代码
(1)本地工作区修改,未添加到暂存区(未add)
git checkout --file
(2)本地工作区修改,添加到暂存区(add),未commit
1、撤销所有已经add的文件
git reset HEAD .
2、撤销某个文件或者文件夹
git reset HEAD -filename
3、回退到上次提交
git reset --hard HEAD^
注意这里容易丢掉代码,可以使用git reflog恢复。
(3)本地工作区修改,添加到暂存区(add),commit之后回退
git reset --soft HEAD^
使用这个命令,仅仅撤销了commit,本地还有代码。
–mixed
意思是:不删除工作空间改动代码,撤销commit,并且撤销git add . 操作
这个为默认参数,git reset --mixed HEAD^ 和 git reset HEAD^ 效果是一样的。
–soft
不删除工作空间改动代码,撤销commit,不撤销git add .
–hard
删除工作空间改动代码,撤销commit,撤销git add .
注意完成这个操作后,就恢复到了上一次的commit状态。
(4)本地工作区修改,添加到暂存区(add),commit之后push,此时回退(已经推上远程仓库)
已经push上远程分支的:
1、特性分支
2、master
在master上的需要先解除保护状态,参考这篇文章。Git 修改已提交的commit注释