回滚master代码_git远程代码回滚master-Go语⾔中⽂社区⼈总是会有犯错的时候,所以我们的代码有时候就需要回滚。贵州旅游点
当我们要回滚的代码还没有提交到远程的时候,可以进⾏本地回滚,较为简单。
⼀、 本地回滚
git ret
回退内容到上⼀个版本。就像现在的⾃⼰为成年⼈,想要回退到童年,直接⽤gitret命令,直接回退到⼩时候。长笛教学
$ git ret --hard 22f8aae 。22f8aae 为某次提交的提交号。
可以⽤git命令进⾏回退,也可以在intellij中可视化界⾯回退,如下。
⽐如我们要回退到第⼆次提交,可以在提交log界⾯中,选中第⼆次提交,右键选择ret current branch to here,如下图所⽰。
ret有⼏种模式,包括Hard 、Mixed、Soft、Keep,区别如下英⽂说明。
git ret --hard HEAD~3 (回退3次提交)
--hard:本地的源码和本地未提交的源码都会回退到某个版本,包括commit内容,和git⾃⼰对代码的索引都会回退到某个版本,就如上图所说,any local changes will be lost。
--soft:保留源码,只能回退到commit信息到某个版本,不涉及到index的回退,如果还需要提交,直接commit即可。⽐如我选择soft⽅式来进⾏回退,我的本地代码和本地新添加的尚未commit的代码都没有改变。
--mixed:会保留源码,只是将git commit和index信息回退到某个版本。
git revert
如果错误的修改已经不是最新的commit,回退某次提交的上⼀步,⽤git revert。并且会⽣成⼀个新的
提交来撤销某次提交,此次提交之前的commit都会被保留。
就像是现在的⾃⼰是青年⼈,⽤git revert是⽆法退回到⼩时候,但可以修改⼩时候某次做过的事情,⽐如⼩时候和别⼈打架,可以直接清除这次打架记忆,但会⽣成⼀个最新的记录,会记录下曾经清楚过⼩时候这段记忆(我的理解是这样的,勿喷)。
git revert c011eb3c20ba6fb38cc94fe5a8dda366a3990c61 回退该次提交(提交后的⽣成的唯⼀编号
c011eb3c20ba6fb38cc94fe5a8dda366a3990c61 )
以上的两种⽅式均为本地回滚,均不可以达到远程回滚的效果。要想把远程分⽀上的代码进⾏回滚,还需要如下操作。
当我们的代码已经提交到远程,不但要回滚本地的代码,同时也要回滚远程的代码,如下操作。
⼆、 远程回滚方格子老虎
⽅法⼀,先git ret回滚到本地,然后再强制push到远程。
1,回滚到本地上述已经说明不再赘述。
2,强推到远程分⽀(谨慎操作,胆⼩勿做,备份预备)
git push -u origin master -f origin:远程仓库名 master:分⽀名称 -f:force,意为强制、强⾏
我们是要把本地的修改强制推送到远程分⽀上,在强推mster的可能会报错,意思是没有权限之类的错误,报错如下。
remote: GitLab: You don't have permission
To git@10.255.223.213:code-ddreader/media-hapi.git女生动漫可爱头像
! [remote rejected] master (pre-receive hook declined)
是因为master分⽀⼀般会成为保护分⽀,所以我们⾸先要去除master为保护分⽀,才可以强推。
为分⽀开启保护
*管理员可以开启
* 开启,⽆法强制推送
* 开启,⽆法被删除
* 只有测试全部通过才被接受合并
这样操作后就可以把本地强制推送要远程。
⽅法⼆,先ret回滚到本地,然后再提交到⼀个新的分⽀,删除错误的分⽀(git brach -d master),再把新的分⽀重命名删除掉的分⽀。(ps这需要团队的其他⼈把本地的删除掉,然后重新下载⼀份,任何⼀个⼈未重新下载就可以出问题。)
格格不入造句
趴的成语默认分⽀设置,也可能要删除的分⽀为 默认分⽀,造成删除默认分⽀失败。
默认分⽀是⽆法删除的,遇到master远程仓库要回滚就会出问题,我们master是默认的主⼲,所以不允许删除,要删除的话还要设置⼀个新的分⽀为主分⽀。
git config --global push.default "current"
所以第⼆种⽅法也不是⼗分的好。
⽅法三,对于少量的回滚,⼿动回滚
烫菜对于少量的回滚,可以⼿动回滚,实在修改的⽂件太多,⽆法具细,再采⽤前两种⽅式。
人生就像一场旅行