git 删除远程分支上的某次提交

article/2025/9/18 23:18:58

转载地址:
http://blog.mtxcxin.cn/blog/git%E5%A6%82%E4%BD%95%E5%9B%9E%E6%BB%9A%E8%BF%9C%E7%A8%8B%E4%BB%93%E5%BA%93.html

使用git管理项目开发的过程中经常会碰到这种情况:某次提交已经push到了远程仓库,可是突然意识到“天哪,我怎么做了这么蠢的事情”。那么问题来了,怎么将远程代码库回滚呢?

在网上看到大部分人给出的解决方案是先将本地回滚,然后删除远程分支,之后再将本地的分支push到远程仓库,这其实是一种很危险的方案,毕竟直接删除远程分支太狠了,不推荐这样做。。。

关于远程仓库回滚

首先,必须要明白的一件事,任何普通用户不能擅自做有关远程仓库回退的操作,如果你擅自回滚了远程仓库,会对项目团队其他人造成不可预知的影响。如果需要回退版本,先联系项目的仓库管理员,在团队其他人都对自己本地未提交的工作做好备份之后,再进行远程仓库回退操作,操作结束后,团队成员需要重新同步远程仓库后继续自己的工作。

通常回滚远程仓库会有以下三种情形:

1、删除最后一次提交

这种情况是最简单的了,只需要以下两步就可以了

git revert HEAD
git push origin master

注意,revert和reset的区别:

revert是放弃指定提交的修改,但是会生成一次新的提交,需要填写提交注释,以前的历史记录都在,而reset是指将HEAD指针指到指定提交,历史记录中不会出现放弃的提交记录。如果还没有理解的话,我们做如下测试:
假设我们有以下三次提交记录:

这里写图片描述

现在我们使用revert放弃最后一次提交,之后执行git log:

git revert HEAD
git log

这里写图片描述

历史记录中还有第三次提交的记录,并且多了一次的提交,但是仓库内容已经回到了第二次提交之后的状态。 现在我们使用reset回到第三次提交,之后执行git log:

git reset --hard HEAD^
git log

这里写图片描述

历史记录中已经没有之前revert生成的提交记录了,现在应该明白了吧。 如果删除远程仓库的最后一次提交的时候不需要保留历史记录的话,可以使用reset,命令如下:

git reset --hard HEAD^
git push origin master -f

-f 参数是强制提交,因为reset之后本地库落后于远程库一个版本,因此需要强制提交。

2、删除历史某次提交

这种情况需要先用git log命令在历史记录中查找到想要删除的某次提交的commit id,比如下图中圈出来的就是注释为”2”的提交的commit id(由此可见提交的注释很重要,一定要认真写)

这里写图片描述

然后执行以下命令(”commit id”替换为想要删除的提交的”commit id”,需要注意最后的^号,意思是commit id的前一次提交):

git rebase -i "commit id"^

执行该条命令之后会打开一个编辑框,内容如下,列出了包含该次提交在内之后的所有提交。

这里写图片描述

然后在编辑框中删除你想要删除的提交所在行,然后保存退出就好啦,如果有冲突的需要解决冲突。接下来,执行以下命令,将本地仓库提交到远程库就完成了:

git push origin master -f

3、修改历史某次提交

这种情况的解决方法类似于第二种情况,只需要在第二条打开编辑框之后,将你想要修改的提交所在行的pick替换成edit然后保存退出,这个时候rebase会停在你要修改的提交,然后做你需要的修改,修改完毕之后,执行以下命令:

git add .
git commit --amend
git rebase --continue

如果你在之前的编辑框修改了n行,也就是说要对n次提交做修改,则需要重复执行以上步骤n次。

需要注意的是,在执行rebase命令对指定提交修改或删除之后,该次提交之后的所有提交的”commit id”都会改变。


http://chatgpt.dhexx.cn/article/7DDghbtC.shtml

相关文章

如何用Git命令删除远程分支

第一步.打开Git终端 我们使用终端来操作,打开系统终端或者编辑器控制台。 第二步.查看所有分支 切换到你git项目所在的目录后,使用 git branch -a命令来查看所有的分支。 第三步.找到远程分支 列出所有分支了,其中上方的是本地的分支&#x…

git 命令怎么删除远程分支

本地删除请看:git 命令怎么删除本地分支 查看所有分支 查看项目的远程分支: git branch -r删除远程分支 比如我们要删除远程分支 origin/SLT_table_report git push origin -d 分支名我们执行: git push origin -d SLT_table_report删除…

如何删除本地和远程的 Git 分支

文章目录 前言一、删除本地分支二、删除远程分支三、注意点总结 前言 我们利用git进行项目管理时,常常需要删除分支,分支分为本地分支和远程分支,本文主要介绍如何删除本地及远程分支。 一、删除本地分支 要删除本地的Git 分支&#xff0…

使用visual studio code 编写小程序代码

1.在vscode中安装插件: minapp 和小程序开发助手 2.在小程序中新建一个小程序文件夹 ,打开vscode 打开小程序文件夹 3.因为改变代码时在微信开发者工具中页面实时刷新,所以为了在vs中改变代码也可以实时看到 把小程序中的模拟器单独拿出来 3.1&#xf…

微信小程序开发 开启

小程序和普通网页开发的区别 1.运行环境不同 小程序是运行在微信环境中,而网页是运行在浏览器环境中。 2.API不同 由于运行环境不同,所以小程序中,无法调用DOM和BOM的API。 但是,小程序中可以调用微信环境提供的各种API&#…

微信开发者工具开发小程序代码自动热加载/重载/部署

前言 微信小程序基础库 2.12.2 默认情况下,使用微信开发者工具开发小程序时,每次保存代码都会重启微信小程序,即每次都模拟器都返回到首页。有没有办法既更新模拟器中的小程序,又保持 在当前页呢?有的,启…

小程序真机调试代码包太大

在小程序真机调试遇到的问题小小的记录一下 问题:message:Error: 代码包大小为 2103 kb,上限为 2048 kb,请删除文件后重试 错误原因:代码包超出了限制 解决方法:在设置中调整真机预览时代码包的大小为4M&…

小程序插入html代码

一、首先,html 分 2 种情况: 1、我在做详情页开发的时候发现获取到的数据是 转译后的 html字符串,如下图: 这种 转译后的 html字符串,左括号、右括号、&符号等都被转译了,这种代码,使用下文…

获取小程序源代码

获取小程序源代码 1、安装夜神模拟器2、安装微信和QQ3、安装 ER管理器4、发送到QQ5、使用反编译脚本解包 wxapkg 方法:运用模拟器,在电脑上运行微信和小程序,从而获取小程序的wxapkg包,再用反编译器就可以获取到源码了 1、安装夜神…

java高并发秒杀活动的各种简单实现

最近遇到比较多数据不一致的问题,大多数都是因为并发请求时,没及时处理的原因,故用一个比较有代表性的业务场景【活动秒杀】来模拟一下这个这种高并发所产生的问题。 众所周知,电商系统的秒杀活动是高并发的很好应用场景&#xff…

Java 高并发解决方案(电商的秒杀和抢购)

电商的秒杀和抢购,对我们来说,都不是一个陌生的东西。然而,从技术的角度来说,这对于Web系统是一个巨大的考验。当一个Web系统,在一秒钟内收到数以万计甚至更多请求时,系统的优化和稳定至关重要。这次我们会…

【转存】java高并发解决方案

知识点 线程安全,线程封闭,线程调度,同步容器,并发容器,AQS,J.U.C,等等 高并发解决思路与手段 扩容:水平扩容、垂直扩容 缓存:Redis、Memcache、GuavaCache等 队列&…

Java 高并发编程详解:多线程与架构设计

内容简介 本书主要包含四个部分: 部分主要阐述 Thread 的基础知识,详细介绍线程的 API 使用、线程安全、线程间数据通信,以及如何保护共享资源等内容,它是深入学习多线程内容的基础。 第二部分引入了 ClassLoader,这…

Java高并发之Redis批量提交数据库

随着系统并发请求激增,参考电商秒杀、当下集中核酸采取等业务场景,如果突然大量数据请求业务系统。此时如果没有做任何缓存措施,直接保存数据库,即使你的数据库做了集群和分库分表,也会由于扛不住并发压力崩溃的。基于…

Java高并发累加器Striped64

原子类 在多线程环境下,常用累加操作方式是使用原子类进行累加,例如AtomicInteger、AtomicLong。但是使用原子类在多线程高竞争的情况下,CAS会经常失败,并发效率会大大降低。 因为CAS操作失败后要自旋再次进行替换,这…

Java高并发编程实战8,同步容器与并发容器

目录 一、为什么这种方式不能实现线程安全性?二、组合三、同步容器类四、隐藏迭代器五、并发容器六、ConcurrentHashMap一、为什么这种方式不能实现线程安全性? 分析一段代码: package com.guor.util;import java.util.

Java高并发项目案例,Java开发指南

一、前言 最近刚读完一本书:《Netty、Zookeeper、Redis 并发实战》,个人觉得 Netty 部分是写得很不错的,读完之后又对 Netty 进行了一波很好的复习(之前用 spring boot netty zookeeper 模仿 dubbo 做 rpc 框架,那时…

Java高并发三部曲

疯狂创客圈为小伙伴奉上以下珍贵的学习资源: 疯狂创客圈 经典极品 : 极致经典《 Java 高并发 三部曲 》 面试必备 大厂必备 涨薪必备 疯狂创客圈 经典图书 : 《Netty Zookeeper Redis 高并发实战》 面试必备 大厂必备 涨薪必备 免费领 …

java队列处理高并发_Java高并发--消息队列

Java高并发--消息队列 举个例子:在购物商城下单后,希望购买者能收到短信或者邮件通知。有一种做法时在下单逻辑执行后调用短信发送的API,如果此时服务器响应较慢、短信客户端出现问题等诸多原因购买者不能正常收到短信,那么此时是…

Java如何解决高并发的问题? 可以试试这些方法

大家好,我是小武,一个工作10年的程序员,就职于鹅厂,平时喜欢搞搞副业。 在工作中,我们经常会遇到高并发的问题,这个是很常见的,只要用户访问量一多的情况下,那么我们的网站就会变慢&…