由于之前自己推代码的时候操作失误,push代码的时候没有push到线上的dev分支,而是push到了线上master分支(主要是因为没有在命令后写分支名,直接推到默认master分支上了),覆盖掉了线上的代码。在搜索解决办法的时候,发现网上给的信息大多不够全,且很多无用。所以在回滚成功之后,写一下关于回滚的文章。
1.如果没有push上去,可以用git reset 本地回滚到之前的代码。
git log查看版本号,然后在用git reset + 版本号回滚。
2.如果push上去了,已经覆盖了线上的代码,就需要先用git revert + 版本号 或者 HEAD(回到上一个push的版本),将线上的代码回滚
用git push -u origin master:master(可以不写,默认与分支相同) -f 强制提交。如果没有-f gitlab会拒绝你的操作。
3.git revert 和 git reset 的区别
(1)git reset命令
1.git reset –mixed + 版本号
暂存区(add/index区)和提交区(commit区)会回退到某个版本,但代码不改变。
2.git reset –soft + 版本号
提交区(commit区)会回退到某个版本,暂存区(add/index区)不会回退,代码不改变。
3.git reset –hard + 版本号
暂存区(add/index区)和提交区(commit区)会回退到某个版本,代码会改变。(推荐)
(2)git revert命令
git revert + 版本号
远程master和本地master都会回退到某个版本。暂存区(add/index区)和提交区(commit区)会回退到某个版本,代码会改变。