码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • [问题解决方案](多人共同合并场景)git已merge到master分支代码且被同事代码覆盖如何回退


    git已merge到master分支代码如何回退(多人共同合并)

    • 场景
    • 已经被同事代码覆盖的解决方案(无需强制合并权限)
      • 代码revert后又需要重新启用怎么办
    • 如果是未受保护分支代码的回退且只有你一人合并的代码 可以直接使用下面的命令即可
    • 如果只是commit没有push 剔除错误commit的方法
    • 如何查看commitId

    场景

    master分支自己开发的需求branch_a已经合并push,但是代码出现错误或者暂时不需要上线,此时同事A,与B 都在这之后提交了代码,怎么办。(master分支受保护不能回退,即使可以回退也需要联系已合并分支代码的同事重新合并,比较麻烦且容易出错)。楼主这边合并的代码涉及到第三方一起上线,因为比较紧急的回滚,所幸改动不大,就重新new分支,把改动的部分先剔除掉重新上线。回过头来找解决方案。

    已经被同事代码覆盖的解决方案(无需强制合并权限)

    git revert a6d1c4b5(回退版本的commitid 一般输前5位即可)
    
    • 1

    在这里插入图片描述

    该命令是剔除非合并分支代码的commit,如果是 合并提交 的commit 需使用下面这条。(什么是合并分支 合并分支即为合并某个分支后在master生成的commit)

    git revert -m 1 a6d1c4b5(回退版本的commitid 一般输前5位即可)
    
    • 1

    -m 后面一般填1 即可,1 代表merge前master分支代码的最后一次快照。2代表merge分支的上一次commit快照。git revert 做的是剔除哪俩个commit版本之间的改动,当然是回到merge前的最后一次快照。如果还不懂,可看这篇点这里

    // 获取当前 合并提交 commit的父分支
    git cat-file -p [MERGE_COMMIT_ID]将按顺序显示父分支。列出的第一个-m 1是第二个-m 2。
    
    • 1
    • 2

    代码revert后又需要重新启用怎么办

    使用 git revert 命令重新提交剔除后的代码,可是开发的需求还在commit2上面,这个时候在合并之前的分支会提示没有更改的东西,因为之前的commit已经提交过了。这个时候怎么办呢 revert revert的commitId即可

    git revert commit5(图内的第五次提交)
    
    • 1

    如果是未受保护分支代码的回退且只有你一人合并的代码 可以直接使用下面的命令即可

    git reset --hard a6d1c4b5(回退版本的commitid 一般输前5位即可)
    // 强制提交
    git push -f
    
    • 1
    • 2
    • 3

    该命令会将本地分支代码回退到指定的commitId ,然后需要强制重新提交。适用于快速回退的那种情况
    详细可以了解 git撤销已push的代码
    楼主拿下图举例,如果commit3和commit4都是提交的错误代码 直接
    git reset --hard commit2Id 本地分支代码就会回到commit2的版本。
    之后 git push -f 强制提交就可以了。不过这样做的话commit3和commit4提交的代码就会丢失。做之前先备份一次分支。
    在这里插入图片描述

    本命令适用于自己一个人开发或者目前只有自己提交代码的分支(如果是master分支,不能 git push -f 强制提交,如果已经提交到master分支且不能强制提交的情况不适用)

    如果只是commit没有push 剔除错误commit的方法

    git reset --soft a6d1c4b5(回退版本的commitid 一般输前5位即可)
    
    • 1

    **该命令适用于还没有提交到远端分支的情况。**在提交代码的时候,commit之后,然后我又在工作区添加了东西,这时候突然发现,上一次的commit有错误的文件,需要重新修改,但是我添加的东西又不想丢失,而且我想修改上一次的提交,这时候可进行git reset --soft 版本号
    在这里插入图片描述

    如图所示,git reset --soft commit2 后,commit3和commit4代码还会在本地,只是撤销了commit,最终再提交就变成commit5。这个命令不会丢失代码。但是如果代码已经合并到远程分支就需要用到git pull(解决冲突后提交)或者git push -f 强制提交。

    如何查看commitId

    如何查看commitid

    希望本文可以帮到你。

  • 相关阅读:
    通过位运算进行两个变量值的交换功能
    Spring中AOP使用场景
    游戏思考18:AOI视野同步算法介绍和简单实现(未完待续8/3)
    4.基于NIO的群聊系统
    pacemaker+corosync 搭建一主两从PG集群
    深度学习基础学习-注意力机制(计算机视觉中)
    【git系列4/4】如何设置core.autocrlf | core.safecrlf (配置值的含义及最佳实践)
    ChatGPT Plus 支付出现「您的银行卡被拒绝/your card has been declined」怎么办?
    [AIGC] 使用Google的Guava库中的Lists工具类:常见用法详解
    你真的会数组去重吗?去重方法汇总解析,看着一篇就够了
  • 原文地址:https://blog.csdn.net/YiQieFuCong/article/details/128173316
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号