当前位置: 首页 > news >正文

git 操作:撤销Merge

你可以根据具体情况选择不同的方法来撤销 Merge remote-tracking branch 'origin/production' into test 这次合并操作。以下是几种常见的撤销方式:


1. 如果尚未提交合并

如果你在执行 git merge origin/production 之后还没有提交(只是有冲突或正在解决冲突),可以直接使用:

git merge --abort

这会取消合并,并回到合并前的状态。


2. 如果已经提交但未推送

如果你已经提交了合并(git commit 了),但还没有推送到远程仓库,可以使用 git reset

(1)回退到合并前的状态(保留更改但不提交)
git reset --soft HEAD~1

这会撤销上一次提交,但保留工作区的更改,你可以重新修改代码并提交。

(2)彻底撤销合并(丢弃所有更改)
git reset --hard HEAD~1

这会直接回退到合并前的状态,并丢弃所有修改。


3. 如果已经推送到远程

如果合并后的提交已经被推送到了远程仓库(比如 origin/test),你需要执行 强制回退

git reset --hard HEAD~1  # 回退到合并前
git push origin test --force  # 强制推送

注意--force 会覆盖远程仓库的历史,可能会影响其他开发者的工作,请谨慎操作。


4. 使用 Revert(不影响历史记录)

如果你不想用 reset,可以用 revert 来反向提交一个新的撤销操作:

git revert -m 1 <合并提交的commit-id>
  • -m 1 指定要保留主分支(test)的改动,而撤销合并。
  • <合并提交的commit-id> 可以用 git log --oneline 找到。

这种方法不会改变历史记录,只是创建一个新的撤销提交,适用于已经推送的情况。


总结

场景解决方法
还没提交git merge --abort
已提交但未推送git reset --hard HEAD~1
已推送,需要撤销git reset --hard HEAD~1 && git push --force
已推送,想保留历史git revert -m 1 <commit-id>

你可以根据你的情况选择合适的方法,如果不确定,可以先 git log 看一下合并提交的情况!

相关文章:

  • NOIP 2024 解题分析
  • nginx之gzip_static详解
  • Matplotlib查看 rc 参数的方法
  • JNI 本地方法调用 Java 静态方法 和 实例方法对比;通过本地方法创建 Java 对象;本地方法访问 Java 数组元素;本地方法错误返回给 Java
  • Linux Shell 基础操作笔记
  • charles接口测试(断点测试)
  • 本人设计的最完全的光压发电机模型
  • 05_循环结构三目运算符
  • Spring MVC 配置详解与入门案例
  • SpringBoot 面试八股文
  • 基于@Scheduled注解(静态配置)实现定时任务
  • SQL调优
  • 搭建PG库和安装pgvector、pgRouting插件
  • uniapp 微信小程序图片下载保存功能
  • TypeScript 泛型 < T > 从入门到精通
  • 可视化图解算法:删除有序(排序)链表中重复的元素
  • 基于AOP注解+Redisson实现Cache-Aside缓存模式实战
  • 春日焕新居:约克VRF中央空调,科技赋能,带你开启健康呼吸新时代
  • 力扣题目分享:只出现1次的数字I II III(位运算版)
  • 宝塔docker flarum默认登录账号密码,crazymax/flarum镜像默认登录账号密码
  • 深圳南山法院回应“执行款未到账”:张核子公司申请的执行异议成立
  • 每日475.52元!最高检公布侵犯公民人身自由最新赔偿金标准
  • 藤井树与藤井树:岩井俊二式的爱情,情书的三重生命
  • 山西资深公益人士孙超因突发急病离世,终年37岁
  • 每一笔都是对的!再读周碧初画作有感
  • 俄罗斯哈巴罗夫斯克市首次举办“俄中论坛”