在 Git 中,撤销(回退)merge 操作有多种方法

在 Git 中,撤销(回退)merge 操作有多种方法,具体取决于是否已提交、是否已推送,以及是否需要保留历史记录。以下是几种常见的撤销 merge 的方法:


1. 未提交 merge(未 commit

如果 merge 后还未提交,可以使用以下方法撤销:

git merge --abort
  • 这会终止当前的合并操作,并恢复到合并前的状态。
  • 适用于合并过程中出现冲突,但还未 git commit 的情况。

2. 已提交 merge,但未推送

如果 merge 已提交但未推送到远程仓库,可以使用 git reset 回退:

git reset --hard HEAD~1
  • HEAD~1 表示回退到上一个提交(即 merge 之前的状态)。
  • 使用 --hard 会丢弃所有未提交的更改,慎用。

3. 已推送 merge

如果 merge 已推送到远程仓库,可以使用 git revert 生成一个反向提交:

git revert -m 1 <merge-commit-id>
  • -m 1 表示保留主分支的更改(即撤销合并分支的更改)。
  • 这会创建一个新的提交,撤销 merge 的更改,但保留历史记录。

4. 使用 git reflog 找回历史记录

如果误操作导致丢失提交,可以使用 git reflog 查看操作历史,并恢复:

git reflog  # 查看操作日志
git reset --hard <commit-id>  # 恢复到指定提交
  • 适用于误操作后需要找回 merge 前的状态。

5. 强制回退远程分支(慎用)

如果 merge 已推送,且需要彻底删除合并记录(会修改历史):

git reset --hard <commit-before-merge>
git push --force origin <branch-name>
  • 注意:这会覆盖远程分支,可能导致其他协作者的代码丢失,需谨慎使用。

6. 撤销 revert(重新合并)

如果之前用 git revert 撤销了 merge,但后续需要重新合并:

git revert <revert-commit-id>  # 撤销之前的 revert
git merge <branch-name>        # 重新合并
  • 适用于需要恢复被撤销的合并操作。

总结

场景方法适用情况
未提交 mergegit merge --abort合并冲突未提交
已提交未推送git reset --hard HEAD~1本地回退
已推送git revert -m 1 <commit-id>保留历史记录
强制回退git reset --hard + git push --force彻底删除合并记录
恢复误操作git reflog + git reset找回丢失的提交

注意事项

  • 使用 --force 推送前,确保团队其他成员知晓,避免代码冲突。
  • git revert 适用于需要保留历史的场景,而 git reset 适用于彻底回退。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/77626.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于 Python 的实现:居民用电量数据分析与可视化

基于 Python 的实现:居民用电量数据分析与可视化 本文将介绍如何利用 Python 技术栈(包括 pymysql、pandas、matplotlib 等库)对居民用电量数据进行分析和可视化,以帮助我们更好地理解用电行为模式。 数据准备 在MySQL数据库中创建数据,,数据库表结构如下: date:记录…

Flow原理

fun main() {runBlocking {launch {flow4.collect{println("---collect-4")}println("---flow4")}}val flow4 flow<Boolean>{delay(5000)emit(false) } 我们分析下整个流程 1.flow为什么之后在collect之后才会发送数据 2.collect的调用流程 我…

设备接入与APP(应用程序)接入华为云iotDA平台的路径元素有哪些不同?

目录 壹、设备接入华为云iotDA &#x1f3e2; 形象比喻&#xff1a;设备 员工&#xff0c;IoTDA 平台 安保森严的总部大楼 一、&#x1f4cd; 平台接入地址 总部大楼地址 二、&#x1f9fe; 接入凭证 出入证 / 门禁卡 / 工牌 1. 设备密钥或证书 2. 预置接入凭证密钥&a…

JavaScript基础知识合集笔记2——数组排序、数组转换字符串、迭代方法

文章目录 排序方法reverse()sort() 转换方法join() 迭代方法some()every()forEach()filter()map() 排序方法 组有两个方法可以用来对元素重新排序&#xff1a; reverse()sort() reverse() 顾名思义&#xff0c;将数组元素方向反转。会直接改变原数组&#xff0c;请谨慎使用…

Redis 笔记(三)-Redis 基本知识及五大数据类型

一、redis 基本知识 redis 默认有 16个 数据库&#xff0c;config get databases 查看数据库数量 127.0.0.1:6379> config get databases # 查看数据库数量 1) "databases" 2) "16"默认使用的是第 0个 16 个数据库为&#xff1a;DB 0 ~ DB 15&am…

springboot项目文件上传到服务器本机,返回访问地址

文件上传到服务器本机&#xff0c;然后给出访问地址&#xff1a; 具体如下&#xff1a; 1、添加必要的工具类依赖 <!-- 文件上传工具类 --><dependency><groupId>commons-fileupload</groupId><artifactId>commons-fileupload</artifactId>…

巧用 Element - UI 实现图片上传按钮的智能隐藏

引言 在前端开发中&#xff0c;使用 Element - UI 组件库来构建用户界面是非常常见的操作。其中图片上传功能更是在许多项目中频繁出现&#xff0c;比如用户头像上传、商品图片上传等场景。有时候&#xff0c;我们会有这样的需求&#xff1a;当上传图片达到一定数量后&#xf…

Golang|工厂模式

工厂模式是一种创建型设计模式&#xff0c;它的核心思想是&#xff1a;把对象的创建过程封装起来&#xff0c;不直接在代码中 new 一个对象&#xff0c;而是通过一个“工厂”来生成对象。这样做的好处是&#xff1a; 降低了代码之间的耦合&#xff08;依赖具体类减少&#xff0…

CentOS 使用国内镜像安装 nvm 和 Node.js 完整指南

前言‌&#xff1a; 本文是实践过程中的个人总结&#xff0c;介绍在 CentOS 系统上通过国内镜像快速安装 nvm&#xff08;Node Version Manager&#xff09;&#xff0c;并配置镜像源加速 Node.js 的下载和依赖管理&#xff0c;解决因网络问题导致的安装失败或速度缓慢。 一、…

ComfyUI 学习笔记:安装篇及模型下载

背景 去年在掘金看到一个博主使用 ComfyUI 进行 AI 绘画&#xff0c;并基于此工具展开个人业务。知道了这个东西&#xff0c;感觉很厉害的样子。 前段时间玩 DeepSeek 的时候&#xff0c;尝试用它写《历史是一群喵》的漫画&#xff0c;给出了 AI 作画的提示词&#xff0c;但是…

人脑、深思考大模型与其他大模型的区别科普

文章目录 大模型的基本概念与特点深思考大模型的独特之处深思考大模型与其他大模型的对比架构与技术训练数据应用场景提示词编写 大模型给出答案的方式&#xff1a;基于概率还是真的会分析问题&#xff1f;人脑的思考过程基本单位与网络大脑结构与功能分区信息处理流程思维模式…

图像保边滤波之BEEPS滤波算法

目录 1 简介 2 算法原理 3 代码实现 4 演示Demo 4.1 开发环境 4.2 功能介绍 4.3 下载地址 参考 1 简介 BEEPS&#xff08;Bias Elimination in Edge-Preserving Smoothing&#xff09; 是一种基于偏微分方程&#xff08;PDE&#xff09;的边缘保留平滑滤波算法。它能够…

怎样给MP3音频重命名?是时候管理下电脑中的音频文件名了

在处理大量音频文件时&#xff0c;给这些文件起一个有意义的名字可以帮助我们更高效地管理和查找所需的内容。通过使用专业的文件重命名工具如简鹿文件批量重命名工具&#xff0c;可以极大地简化这一过程。本文将详细介绍如何利用该工具对 MP3 音频文件进行重命名。 步骤一&am…

uniapp实现统一添加后端请求Header方法

uniapp把请求写完了&#xff0c;发现需要给接口请求添加头部&#xff0c;每个接口去添加又很麻烦&#xff0c;uniapp可以统一添加&#xff0c;并且还能给某些接口设置不添加头部。 一般用于添加token登录验证信息。 在 main.js 文件中配置。 代码如下&#xff1a; // 在…

Qt/C++面试【速通笔记四】—Qt中的MVC模式

在软件开发中&#xff0c;设计模式是为了让代码结构更加清晰、可维护和扩展的工具。MVC&#xff08;Model-View-Controller&#xff0c;模型-视图-控制器&#xff09;模式就是其中一种经典的设计模式&#xff0c;它被广泛应用于图形界面&#xff08;GUI&#xff09;应用程序中。…

机器学习-入门-线性模型(2)

机器学习-入门-线性模型(2) 3.4广义线性回归 一般形式&#xff1a; y g − 1 ( w T x b ) y g^{-1} \left( w^T x b \right) yg−1(wTxb) 单调可微的联系函数 (link function) 令 g ( ⋅ ) ln ⁡ ( ⋅ ) g(\cdot) \ln (\cdot) g(⋅)ln(⋅) 则得到对数线性回归 ln ⁡…

Scratch——第20课 辗转相除法/绳子算法

辗转相除法是用于求取最大公约数时需要用到的方法&#xff0c;它还有个名字称为绳子算法&#xff0c;这类题目只要理解辗转相处的原理即可拿下。 一、辗转相除法的基本原理 两个整数的最大公约数不变&#xff0c;当较大数减去较小数后&#xff0c;得到的差值与较小数的最大公…

【Keil5-开发指南】

Keil5-编程指南 ■ Keil5 介绍■ Keil5 生成bin文件■ 新建工程后debug在 BX R0 不动了■ J-Flash 使用■ Keil5-Debug调试工具 Jlink---STLink---DAP仿真器■ Keil5 使用 AStyle插件格式化代码■ Keil5-编译4个阶段■ Keil5-Boot和APP配置■ Keil5-报错■ 芯片手册区别 ■ Kei…

HarmonyOS SDK助力鸿蒙版今日水印相机,真实地址防护再升级

今日水印相机是一款真实记录"工作"和"生活"的水印拍照APP。作为专业的可信影像服务平台&#xff0c;今日水印相机依托时间、地点、身份三重数字水印技术&#xff0c;为企业和个人提供考勤打卡、外勤巡检、生活美好时刻记录等场景的可信存证服务。 面对虚拟…

WSL释放空间

在 WSL (Windows Subsystem for Linux) 中&#xff0c;Linux 发行版可能会占用越来越多的磁盘空间&#xff0c;即使删除文件后&#xff0c;空间也可能不会自动释放。这是因为 WSL 使用虚拟硬盘&#xff08;VHDX 文件&#xff09;来存储 Linux 文件系统&#xff0c;而 Windows 不…