首页 > 其他分享 >如何回退已经合并的master代码?

如何回退已经合并的master代码?

时间:2024-03-22 18:44:06浏览次数:30  
标签:git revert 代码 合并 push master 回退 分支

如何回退已经合并的master代码?

在CodeUp(一个代码托管平台,类似于GitLab、GitHub等)上撤销已经合并到master分支的提交,你需要遵循以下基本步骤:

  1. 回滚 master 分支
  • 如果你想要撤销整个合并操作并恢复到合并前的状态,你可以执行一个反向合并(revert merge)。在Git中,这通常通过创建一个新的提交来实现,这个提交的内容与你要撤回的合并相反。
# 在本地master分支
git checkout master
git revert -m 1 <合并提交的SHA-1哈希值>
git push origin master

-m 1 参数告诉Git选择合并提交的第一个父提交作为基准,这样可以保持原有的分支历史记录清晰。

  1. 交互式重置或变基(Rebase)
  • 如果你想更彻底地删除合并历史,使master分支看起来就像从未进行过那次合并,可以使用git reset或者git rebase。但这将更改项目的历史,并需要通知团队成员更新他们的本地副本。
# 确保不在master分支上,创建一个新的临时分支
git checkout -b temp-rollback master

# 重置master到合并前的某个提交
git checkout master
git reset --hard <合并之前的提交SHA-1>

# 推送master分支的新版本,可能需要force push,因为历史被更改了
git push origin +master

# 清理临时分支
git branch -D temp-rollback
  1. 在协作环境中处理
  • 由于撤销合并操作会改变项目历史,这可能会对其他开发者的本地分支造成影响。因此,在执行之前,请确保沟通清楚,并考虑是否有更好的方式解决冲突或修复错误,而不是简单地撤销合并。

请注意,具体的命令和流程可能会根据所使用的代码托管服务的功能有所不同。请谨慎操作,尤其是涉及force push时,因为它会覆盖远程仓库的历史记录。在实际操作前,建议备份相关数据,并充分了解团队的Git工作流和政策。

我的远程master不允许 push

如果你的远程master分支设置了保护,不允许直接push,那么在执行git revert并尝试推送到远程时可能会遇到权限问题。在这种情况下,你需要按照以下步骤操作:

  1. 创建一个撤销合并的Pull Request
  • 在本地执行git revert操作生成新的提交。
git checkout master
git revert -m 1 <合并提交的SHA-1哈希值>
  1. 推送这个新的提交到一个新的分支
git checkout -b revert-merge
git push origin revert-merge
  1. 在代码托管平台(如GitHub、GitLab)上创建Pull Request
  • 登录到你的代码托管服务,找到你刚才推送的revert-merge分支,并基于它创建一个新的Pull Request,目标分支为master
  1. 等待审查和合并
  • 等待项目维护者或者其他有权限的团队成员对你的Revert PR进行审查,确认无误后他们会将这个PR合并到master分支上。

这样可以确保即使远程master分支受到保护,也能通过协作流程完成撤销合并的操作。同时,请务必与团队沟通这种操作的目的和影响,以确保符合团队工作流程。



欢迎关注公-众-号【TaonyDaily】、留言、评论,一起学习。

公众号

Don’t reinvent the wheel, library code is there to help.

文章来源:刘俊涛的博客


若有帮助到您,欢迎点赞、转发、支持,您的支持是对我坚持最好的肯定(_)

标签:git,revert,代码,合并,push,master,回退,分支
From: https://www.cnblogs.com/lovebing/p/18090255

相关文章

  • 又一款代码神器,效率直接翻倍!免费的还是香啊!
    前言提到商汤科技,你可能仍然将其与“AI四小龙”、“计算机视觉领军企业”等标签联系在一起。然而,在ChatGPT与Sora赢得广泛关注后,商汤科技依托其深厚的人工智能技术基础,迅速开发出自己的大型模型及人工智能应用产品,其中就包括即将向你介绍的“小浣熊”智能助手。手机和电脑都适用......
  • 分享基于PDF.js的pdf阅读器代码
    一、前言有时候开发PC端web页面的时候会遇到PDF预览、下载等功能,为了兼容浏览器,需要找一款前端插件进行开发。比较好的PDF插件,就是mozilla的pdf.js(注意是mozilla,如果你百度遇到需要收费的,那应该是下载错了)。而从mozilla的Github仓库去找想要的代码,如果你不熟悉,想直接使用的......
  • 【教程】深入探究 JS代码混淆与加密技术
     ......
  • Java版本spring cloud + spring boot企业电子招投标系统源代码
    招投标管理系统是一个集门户管理、立项管理、采购项目管理、采购公告管理、考核管理、报表管理、评审管理、企业管理、采购管理和系统管理于一体的综合性应用平台。它适用于招标代理、政府采购、企业采购和工程交易等业务的企业,旨在提高项目管理的效率和质量。该系统以项目为主......
  • 操作系统综合题之“请填写信号量值并说明操作结果(正常、阻塞或唤醒。如阻塞或者唤醒,需
    1.问题:题36表是两个同步进程的模拟执行,生产者将物品放入共享缓冲区供消费者使用,缓冲区可放2件物品,使用2个信号量,并置初值为S1=2,S2=0.现已知操作情况,请填写信号量值并说明操作结果(正常、阻塞或唤醒。如阻塞或者唤醒,需说明阻塞或者被唤醒的是P1还是P2)。(提示:缓冲区满,不许放物品;缓......
  • 操作系统综合题之“用记录型信号量机制的wait操作和signal操作写出三个进程的同步代码
    1.问题:假设一个水果赛选系统由三个进程A、B、C组成。进程A每次取一个水果,之后存放在货架F上,F的容量为每次只能存放一个水果。若货架上存放的是苹果则让进程B取出,并存放到苹果箱中;若货架上存放的是菠萝则让进程C取出后,将其存放到菠萝框中(1)列出所需的信号量并初始化(2)请用记录型信......
  • RecursiveCharacterTextSplitter和CharacterTextSplitter代码随读
    直接说结论:优先使用RecursiveCharacterTextSplitter,输入一个separatorlist。优先划分大的符号放到前面,比如句号,分号,划分小块的放到后面。 如果想让separator不生效,就放一个原文中不会出现的一个符号,如果separator为空的话,会有一个默认值self._separators=separatorsor["......
  • 操作系统综合题之“按要求是个进程协调完成任务,补充完整下列程序,将编号①~⑩处空缺的
    1.问题:假设某系统有四个进程。input1和input2进程负责从不同设备读取数据,分别表示为data1和data2,存放在缓冲区Buffer中,output1和output2进程负责从Buffer中分别获取data1和data2。Buffer中每次只能存放一个数据。varempty,full1,full2:semaphore;empty.value=1;①_______;②______......
  • 代码随想录算法训练营第五十四天 | 115.不同的子序列,392.判断子序列
    392.判断子序列 已解答简单 相关标签相关企业 给定字符串 s 和 t ,判断 s 是否为 t 的子序列。字符串的一个子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串。(例如,"ace"是"abcde"的一个子序列,而"aec"不......
  • .net core 实现微信支付-小程序支付(服务端代码)
    前言前段时间研究了下微信支付-小程序支付的功能。但微信支付文档中关于.netC#的语言的sdk没有,只有javago和php版本的,当然社区也有很多已经集成好的微信支付.netcoresdk,但他们的的又都太臃肿了(我只需要个微信支付即可),集成度也特别深,用起来还得先学习下他们的文档,拿来主义固......