git-reset

作者: fuweiwei | 来源:发表于2017-05-05 10:15 被阅读0次

    工作中出现如下的问题:
    一次上线之前将可以上线的分支A合并到了master中,并将合并以后的分支推送到了远程分支中去,后续上线以后的测试操作中,发现新上线的功能不完善,需要重新下线重新操作。而此时代码已经共享,但还好没有其他工作伙伴从最新的master分支中拉取代码进行研发,此时需要进行的是代码的回滚操作,且需要的是后续还有进行之前分支A合并到新的master中。

    网上查询资源发现 git-reset 可以实现上述的功能。

    This form resets the current branch head to <commit> and possibly updates the index (resetting it to the tree of <commit>) and the working tree depending on <mode>. If <mode> is omitted, defaults to  "--mixed".
    

    如下是操作的详细记录:

    先使用git reset 将当前的代码回滚到某一个操作。

    git reset --hard c8c72b78f7f81ed6c7877dc3049963f206f89a12

    然后强制推送到远程分支中

    git push -f origin master

    remark:此时发现,由于此种操作的权限需要的是master的操作,但在gitlab的环境下发现,已经授权master操作的,依旧没办法将代码强制推送,这时候去查看intellij IDEA的操作环境中的protected的分支,也是设置的可以force push的,依旧无法推送,最后进入到gitlab的后台中,将当前的受保护的分支master设置为unprotected,然后重新进行代码推送,这时候发现代码成功的推送了上去。

    注意
    使用git-set的操作命令,会将操作的历史记录信息进行清空,就好像没有操作过一样,所以这样的操作方式,我们需要慎重的去对待!!!

    相关文章

      网友评论

          本文标题:git-reset

          本文链接:https://www.haomeiwen.com/subject/aqpjtxtx.html