git之远程代码回滚master问题

 更新时间:2023年11月28日 09:29:07   作者:蓝精灵的自由宇宙  
这篇文章主要介绍了git之远程代码回滚master问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
(福利推荐:【腾讯云】服务器最新限时优惠活动,云服务器1核2G仅99元/年、2核4G仅768元/3年,立即抢购>>>:9i0i.cn/qcloud

(福利推荐:你还在原价购买阿里云服务器?现在阿里云0.8折限时抢购活动来啦!4核8G企业云服务器仅2998元/3年,立即抢购>>>:9i0i.cn/aliyun

人总是会有犯错的时候,所以我们的代码有时候就需要回滚。

当我们要回滚的代码还没有提交到远程的时候,可以进行本地回滚,较为简单。

一、 本地回滚

git reset

回退内容到上一个版本。就像现在的自己为成年人,想要回退到童年,直接用gitreset命令,直接回退到小时候。

$ git reset --hard 22f8aae 。

22f8aae 为某次提交的提交号。

可以用git命令进行回退,也可以在intellij中可视化界面回退,如下。

比如我们要回退到第二次提交,可以在提交log界面中,选中第二次提交,右键选择reset current branch to here,如下图所示。

reset有几种模式,包括Hard 、Mixed、Soft、Keep,区别如下英文说明。

git reset --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 reset回滚到本地,然后再强制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为保护分支,才可以强推。

为分支开启保护

  • *管理员可以开启
  • * 开启,无法强制推送
  • * 开启,无法被删除
  • * 只有测试全部通过才被接受合并

该分支添加了保护权限,需要设置去掉保护权限(http://10.255.223.*/code-dd/media-project/protected_branches)。

这样操作后就可以把本地强制推送要远程。

方法二

先reset回滚到本地,然后再提交到一个新的分支,删除错误的分支(git brach -d master),再把新的分支重命名删除掉的分支。

(ps这需要团队的其他人把本地的删除掉,然后重新下载一份,任何一个人未重新下载就可以出问题。)

默认分支设置,也可能要删除的分支为 默认分支,造成删除默认分支失败。

默认分支是无法删除的,遇到master远程仓库要回滚就会出问题,我们master是默认的主干,所以不允许删除,要删除的话还要设置一个新的分支为主分支。

git config --global push.default "current"

所以第二种方法也不是十分的好。

方法三

对于少量的回滚,手动回滚

对于少量的回滚,可以手动回滚,实在修改的文件太多,无法具细,再采用前两种方式。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持程序员之家。

相关文章

  • yum的基本用法和实例(推荐)

    yum的基本用法和实例(推荐)

    这篇文章主要介绍了Linux(centos8)下的yum的基本用法和实例,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-02-02
  • VSCode设置默认打开的浏览器的方法

    VSCode设置默认打开的浏览器的方法

    这篇文章主要介绍了VSCode设置默认打开的浏览器的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • 搭建websocket消息推送服务,必须要考虑的几个问题

    搭建websocket消息推送服务,必须要考虑的几个问题

    面对各种新场景对websocket功能和性能越来越高的需求,不同的团队有不同的选择,下面给大家分享构建websocket服务时必须要考虑的一些技术特性以及能显著提高用户体验的功能,感兴趣的朋友跟随小编一起看看吧
    2020-04-04
  • VS?Code快速生成html(头部)模板图文教程

    VS?Code快速生成html(头部)模板图文教程

    这篇文章主要给大家介绍了关于VS?Code快速生成html(头部)模板的相关资料,为了避免简单的重复劳动,借助VSCODE 快速生成文件头部,在项目搭建中体验非常舒适,需要的朋友可以参考下
    2023-11-11
  • vscode+picgo+github配置免费图床(图文教程)

    vscode+picgo+github配置免费图床(图文教程)

    本文主要介绍了vscode+picgo+github配置免费图床,文中通过图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-01-01
  • 关于target目录在idea没显示的问题

    关于target目录在idea没显示的问题

    这篇文章主要介绍了关于target目录在idea没显示的问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-11-11
  • Git Submodule使用完整教程(小结)

    Git Submodule使用完整教程(小结)

    这篇文章主要介绍了Git Submodule使用完整教程(小结),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • 编写高质量代码的30条黄金守则(首选隐式类型转换)

    编写高质量代码的30条黄金守则(首选隐式类型转换)

    这篇文章主要介绍了编写高质量代码的30条黄金守则(首选隐式类型转换),本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-08-08
  • Postman设置环境变量的实现示例

    Postman设置环境变量的实现示例

    本文主要介绍了Postman设置环境变量的实现示例,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • 在Visual Studio中使用GIT进行源码管理

    在Visual Studio中使用GIT进行源码管理

    这篇文章介绍了在Visual Studio中使用GIT进行源码管理的方法,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-06-06

最新评论

?


http://www.vxiaotou.com