撤销推送
Step1:
git log查看提交信息
Step2:
git reset --soft aa909cff2239536df14820fe086d96305b24e9f1
此时把git分支回滚到aa909这个commit时间点
撤销提交的命令:git reset --soft <版本号>
此时相对于回到分支头部第二条commit
所以我们也可以这样操作:
git reset --soft HEAD^
或者
git reset --hard HEAD~1
HEAD^ 表示上一个版本,即上一次的commit,也可以写成HEAD~1 如果进行两次的commit,想要都撤回,可以使用HEAD~2
--soft 不删除工作空间的改动代码 ,撤销commit,不撤销git add file--hard 删除工作空间的改动代码,撤销commit且撤销add
此时可以看到:工作空间出现git add的代码变更 (如果使用--hard就不会有,直接删掉了)
分支状态:存在一个未推送处理
Step3:
此时可能有人会想,我直接把工作区的文件撤销了,然后再commit,再push,是不是就可以完成回滚了?
答案是错的。如果你这么做了,git会提示你:本地版本落后于远端的版本
To http://oa.zyqwt.com/wanzexi/oa_rebuild.git
! [rejected] master -> master (non-fast-forward)
error: failed to push some refs to 'http://oa.zyqwt.com/wanzexi/oa_rebuild.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
所以我们必须需要加上参数–force用本地的版本覆盖掉远端的版本
git push origin feature/dashboard-components --force
Step4:
修改或删除代码后,按流程提交commit
git add .
git commit -m 'x'
git push origin feature/dashboard-components
撤销本地commit
commit后
这个时候我们不想提交到远端,要撤回修改,我们应该怎么办呢?
git reset --soft HEAD^
因为远端版本没有改变,也低于本地版本,所以我们无需其他操作
可以看到文件已经回退回来了