Git常用命令#如何撤销commit、push、merge操作

在开发中,经常会发生一些不可控的局面,比如刚睡醒,突然手抖合并了一段垃圾代码到主分支?此时靓仔你该如何应对?

就此我们分如下几种场景进行说明

1.已commit未push 如何撤销?

如果你已经在 Git 中做了提交(commit),但是还没有将这些提交推送(push)到远程仓库,你可以使用 git reset 命令来撤销最近的提交,使得它们不再在当前分支上。

①使用 git reset 命令和 --soft 选项来撤销最近的提交但保留更改:
git reset --soft HEAD~1

这个命令将会撤销最后一次提交但会保留暂存区和工作区的更改,使得你可以重新提交这些更改或者修改后再提交。

②如果你想要完全删除最后一次提交的更改,可以使用 --hard 选项:
git reset --hard HEAD~1

这会彻底删除最后一次提交的更改,慎用,因为这将会永久删除你所做的更改。

需要注意的是,撤销提交会改变你本地的历史记录,如果这些提交已经被其他人拉取或者使用了,强制推送这些变更可能会导致问题。所以,在执行这些命令之前,请确保理解其带来的影响,并在必要的情况下与团队进行沟通。

已经merge的如何撤销

如果你已经合并了一个分支到当前分支,并且希望撤销这次合并,可以使用 git reset 命令来回滚到合并之前的状态。但请注意,撤销合并可能会导致提交历史的改变,因此在进行此操作之前,请确保你知道自己在做什么,并确保不会丢失重要的更改。

要撤销刚刚的合并,可以按照以下步骤:

① 查找合并之前的提交:

首先,使用 git log 查看提交历史,找到合并之前的提交的哈希值或者引用(比如分支名)。

② 回滚到合并之前的状态:

使用 git reset 命令将当前分支回滚到合并之前的状态。假设合并前的提交是 ABC123

git reset --hard ABC123

这个命令会将当前分支移动到指定的提交,删除合并所带来的更改。

③强制推送到远程仓库(如果需要):

如果你已经将这个分支推送到远程仓库并且想要撤销合并的更改,你可能需要使用强制推送来更新远程分支:

git push origin <branch_name> --force

请注意,强制推送可能会对其他人的工作产生影响,因此在执行之前请确保与团队沟通并充分了解其潜在影响。

撤销合并操作会修改提交历史,所以请谨慎操作并确保你知道自己在做什么。

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

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

相关文章

Python 时间详解(time)

文章目录 1 获取1.1 当前时间戳&#xff1a;time()1.2 本地结构化时间&#xff1a;localtime()1.3 世界结构化时间&#xff1a;gmtime() 2 转换2.1 结构化时间 -> 时间戳&#xff1a;mktime()2.2 时间戳 -> 可读性时间字符串&#xff1a;ctime()2.3 结构化时间 -> 可读…

keepalive路由缓存实现前进刷新后退缓存

1.在app.vue中配置全局的keepalive并用includes指定要缓存的组件路由name名字数组 <keep-alive :include"keepCachedViews"><router-view /></keep-alive>computed: {keepCachedViews() {console.log(this.$store.getters.keepCachedViews, this.…

cmake和vscode 下的cmake的使用详解(一)。

本文的内容 参考如下内容。 1.【基于VSCode和CMake实现C/C开发 | Linux篇】https://www.bilibili.com/video/BV1fy4y1b7TC?vd_source0ddb24a02523448baa69b0b871ab50f7 2.Notion – The all-in-one workspace for your notes, tasks, wikis, and databases. 3.关于如何利用…

linux下编译OpenCV

很多朋友在 Linux 系统中为 C 程序安装 OpenCV &#xff08;从源代码生成&#xff09;时经常会遇到各种各样的问题&#xff0c;尤其是对 C 生成系统或 Linux 不熟的情况下就更难以完成了。我也是被问得太烦了&#xff0c;干脆写一篇文章来行详解。其实也不怎么复杂&#xff0c;…

生命周期标注

fn main() {let r;{let x 5;r &x}print!("r:{}", r); }let r 这种初始化的方式在RUST中是被允许的&#xff0c;过程中程序声明了两个变量x和r&#xff0c;程序无法正常编译。 x does not live long enough 编译报错的原因&#xff1a;被引用对象的存活时间短语…

用HeidiSQL在MySQL中创建新的数据库

用有权限的用户登录&#xff1a; 右键单击&#xff0c;选择&#xff1a; 输入要创建的数据库名称&#xff0c;然后点击“确定”&#xff1a; 刷新下&#xff0c;就看到新创建的数据库了&#xff1a; 在新创建的数据库中&#xff0c;就可以做其它操作了&#xff0c;例如…

docker 切换镜像源

Dockerfile build 报错了&#xff1a; WARNING: fetching https://dl-cdn.alpinelinux.org/alpine/v3.18/main: temporary error (try again later) WARNING: fetching https://dl-cdn.alpinelinux.org/alpine/v3.18/community: 这个问题是默认的 Alpine Linux 的软件包镜像源…

uniapp微信小程序实现地图展示控件

最终实现效果&#xff1a; 地图上展示控件&#xff0c;并可以点击。 目录 一、前言 二、在地图上展示控件信息 点击后可进行绘制面图形 1.使用cover-view将控件在地图上展示 2.设置控件样式&#xff0c;使用好看的图标 3.控件绑定点击事件 一、前言 原本使用的是control…

Android 11.0 所有音量默认为最大音量值

Android 11.0 所有音量默认为最大音量值 最近接到邮件需求想要将设备的所有音量的音量值默认为最大&#xff0c;修改默认音量值是在AudioSystem.java中的修改&#xff0c;具体修改参照如下&#xff1a; /frameworks/base/media/java/android/media/AudioSystem.java /// M: m…

nginx 配置前端项目添加https

可申请阿里云免费证书 步骤省略… nginx 配置 server {listen 8050; #默认80端口 如果需要所有访问地址都是https 需要注释listen 8443 ssl; #https 访问的端口 &#xff0c;默认443server_name 192.168.128.XX; #域名 或 ip# 增加ssl#填写证书文件…

Java多线程-第20章

Java多线程-第20章 1.创建线程 Java是一种支持多线程编程的编程语言。多线程是指在同一程序中同时执行多个独立任务的能力。在Java中&#xff0c;线程是一种轻量级的子进程&#xff0c;它是程序中的最小执行单元。Java的多线程编程可以通过两种方式实现&#xff1a;继承Threa…

IntelliJ IDEA安装使用教程

IntelliJ IDEA是一个流行的Java 集成开发环境&#xff08;IDE&#xff09;&#xff0c;由JetBrains公司开发。它是一款全功能的IDE&#xff0c;支持多种编程语言&#xff0c;如Java、Kotlin、Groovy、Scala、Python、JavaScript、HTML、CSS等等。IntelliJ IDEA 提供了高效的代码…

Pytorch在二进制层面比较张量中的各行是否相同,并返回不相同的各行

代码实例&#xff1a; def unique(arr):# Finds unique rows in arr and return their indicesarr arr.cpu().numpy()arr_ np.ascontiguousarray(arr).view(np.dtype((np.void, arr.dtype.itemsize * arr.shape[1])))_, idxs np.unique(arr_, return_indexTrue)if torch.cu…

代码随想录算法训练营 ---第五十一天

1.第一题&#xff1a; 简介&#xff1a; 本题相较于前几题状态复杂了起来&#xff0c;因为多了一个冷冻期。本题讲解可去代码随想录看&#xff0c;这里差不多只是加了些自己的理解。 动规五部曲&#xff0c;分析如下&#xff1a; 确定dp数组以及下标的含义 dp[i][j]&#x…

C#文件流二进制文件的读写

目录 一、BinaryWriter类 二、BinaryReader类 三、示例 1.源码 2.生成效果 二进制文件的写入与读取主要是通过BinaryWriter类和BinaryReader类来实现的。 一、BinaryWriter类 BinaryWriter类以二进制形式将基元类型写入流&#xff0c;并支持用特定的编码写入字符串&#…

(五)基于高尔夫优化算法GOA求解无人机三维路径规划研究(MATLAB代码)

一、无人机模型简介&#xff1a; 单个无人机三维路径规划问题及其建模_IT猿手的博客-CSDN博客 参考文献&#xff1a; [1]胡观凯,钟建华,李永正,黎万洪.基于IPSO-GA算法的无人机三维路径规划[J].现代电子技术,2023,46(07):115-120 二、高尔夫优化算法GOA简介 高尔夫优化算法…

使用Pytorch从零开始实现CLIP

生成式建模知识回顾: [1] 生成式建模概述 [2] Transformer I&#xff0c;Transformer II [3] 变分自编码器 [4] 生成对抗网络&#xff0c;高级生成对抗网络 I&#xff0c;高级生成对抗网络 II [5] 自回归模型 [6] 归一化流模型 [7] 基于能量的模型 [8] 扩散模型 I, 扩散模型 II…

sublime Text使用

1、增加install 命令面板 工具(tool)->控制面板(command palette) -> 输入install ->安装第一个install package controller&#xff0c;以下安装过了&#xff0c;所以没展示 2、安装json格式化工具 点击install package&#xff0c;等几秒会进入控制面板&#xff0…

润申信息企业标准化管理系统 SQL注入漏洞复现

0x01 产品简介 润申信息科技企业标准化管理系统通过给客户提供各种灵活的标准法规信息化管理解决方案&#xff0c;帮助他们实现了高效的标准法规管理&#xff0c;完成个性化标准法规库的信息化建设。 0x02 漏洞概述 润申信息科技企业标准化管理系统 CommentStandardHandler.as…

高级I/O 基础概念

文章目录 什么是高级I/O五种常见高级I/O同步IO和异步IO多路转接是异步IO吗 什么是高级I/O 高级I/O&#xff08;Advanced I/O&#xff09;是指在计算机系统中进行输入和输出操作时使用的一种更高级的接口和技术。它提供了比传统的基本I/O操作更丰富和灵活的功能&#xff0c;以满…