Git进阶:本地或远程仓库如何回滚到之前的某个commit
在Git的使用过程中,我们经常会遇到需要回滚到之前某个commit的情况。无论是为了修复错误、撤销更改,还是为了重新组织代码,回滚到特定commit都是一个非常有用的技能。本文将介绍几种常用的回滚方法,帮助读者更好地掌握Git版本控制。
1. 使用git revert
git revert命令用于创建一个新的commit,该commit会撤销指定commit的更改。这种方法不会改变历史,而是在历史中添加一个新的commit来抵消之前的更改。
例如,要回滚到HEAD~3(即当前commit的前三个commit),可以执行以下命令:
git revert HEAD~3
这会打开默认的文本编辑器,要求你输入提交信息。输入完毕后保存并退出,Git将创建一个新的commit,撤销HEAD~3的更改。
2. 使用git reset
git reset命令用于将HEAD指针移回到指定的commit,并可以选择性地更改索引(暂存区)和工作目录。
如果希望保留工作目录的更改,但希望回滚到HEAD~3,可以使用--soft选项:
git reset --soft HEAD~3
这将回滚到HEAD~3,但保留工作目录中的更改。你可以继续添加新的更改并提交。
如果你想回滚到HEAD~3,并丢弃工作目录中的更改,可以使用--hard选项:
git reset --hard HEAD~3
请注意,使用--hard选项会丢弃工作目录中的所有更改,因此在执行此命令之前,请确保备份重要的工作成果。
3. 使用git revert与git reset的比较
git revert:创建一个新的commit来撤销之前的更改,不改变历史。适用于公共仓库,因为它不会破坏其他人的工作。git reset:移动HEAD指针到指定commit,可以选择性地更改索引和工作目录。可能会改变历史,因此不适用于公共仓库。
4. 强制推送回滚到远程仓库
如果你已经回滚了本地仓库的commit,并希望将这些更改推送到远程仓库,可能会遇到推送被拒绝的情况,因为远程仓库仍然包含你希望回滚的commit。
在这种情况下,你可以使用git push命令的--force选项来强制推送更改:
git push --force origin your-branch-name
但是,请注意,强制推送会覆盖远程仓库的历史,可能会导致其他人遇到问题。因此,在执行此操作之前,请确保与团队成员进行充分的沟通。
5. 强制推送可能出现问题:remote: GitLab:You are not allowed to force push code to a protected branch on this project
原因
分支开启了受保护,未开启强制推送。
解决办法
将master分支解除保护。
步骤:
使用管理员账号登陆
(1)进入gitlab中的项目: 设置(Settings)-> 仓库(Repository) -> 保护分支(Protected Branches)->(把保护的分支选择 unprotected)

再重新进行强制推送 git push -f,即可成功。
(2)当提交成功后,不要忘了重新将master分支加入保护。
进入gitlab中的项目:设置(Settings)-> 仓库(Repository) -> 保护分支(Protected Branches)-> 选择分支,Allowed to merge,Allowed to push(把保护的分支选择protect )

参考:Git进阶:如何回滚到之前的某个commit-百度开发者中心 remote: GitLab:You are not allowed to force push code to a protected branch on this project_remote: gitlab: you are not allowed to force push -CSDN博客
相关文章:
Git进阶:本地或远程仓库如何回滚到之前的某个commit
在Git的使用过程中,我们经常会遇到需要回滚到之前某个commit的情况。无论是为了修复错误、撤销更改,还是为了重新组织代码,回滚到特定commit都是一个非常有用的技能。本文将介绍几种常用的回滚方法,帮助读者更好地掌握Git版本控制…...
linux 中文输入法设置的宏观思路 (****)
乱是永远的不乱,变是永远的不变。 $ ibus help # 注意:help 前没有杠符号 $ setxkbmap -help # 注意:help 前只有一个杠符号 $ localectl --help # 注意:help 前有 2 个杠符号 $ man im-config # 注意:-h, --help 只出来提示信息:请参考。。。。。。。 $ man abc…...
271-基于XC7V690T的12路光纤PCIe接口卡
一、板卡概述 基于XC7V690T的12路光纤PCI-E接口卡,用于实现多通道高速光纤数据接收和发送,板卡兼容PCIe 2.0和PCIe 3.0规范,利用PCI-E Switch PEX 8748实现FPGA芯片与计算机的通信,计算机与板卡接口处提供PCI-e 16速接口ÿ…...
Semaphore UI安装和实践
本次实验环境采用centos7.9操作系统,使用rpm包安装方式。 1.配置yum源 --下载centos华为云镜像仓库 wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.huaweicloud.com/repository/conf/CentOS-7-anon.repo[rootlocalhost ~]# wget -O /etc/yum.repos.…...
Redis篇--常见问题篇7--缓存一致性2(分布式事务框架Seata)
1、概述 在传统的单体应用中,事务管理相对简单,通常使用数据库的本地事务(如MySQL的BEGIN和COMMIT)来保证数据的一致性。然而,在微服务架构中,由于每个服务都有自己的数据库,跨服务的事务管理变…...
Docker Compose 安装 Harbor
我使用的系统是rocky Linux 9 1. 准备环境 确保你的系统已经安装了以下工具: DockerDocker ComposeOpenSSL(用于生成证书)#如果不需要通过https连接的可以不设置 1.1 安装 Docker 如果尚未安装 Docker,可以参考以下命令安装&…...
使用docker compose安装gitlab
使用docker compose安装gitlab GitLab简介设置GITLAB_HOME路径创建docker挂载目录获取可用的GitLab版本编写docker-compose.yml文件启动docker基础配置GITLAB_OMNIBUS_CONFIG修改配置 中文设置数据库配置系统邮箱配置 GitLab简介 GitLab是一个基于Git的开源项目,…...
大模型日报 2024-12-18
大模型日报 2024-12-18 大模型资讯 标题: 3B模型长思考后击败70B!HuggingFace逆向出o1背后技术细节并开源 摘要:这篇文章探讨了小模型在经过长时间思考后,如何在性能上超越更大规模模型的现象。HuggingFace通过逆向工程和开源技术…...
Linux安装mysql5.7
一、下载mysql5.7 首先我们需要去下载linux版本的mysql-5.7.24的安装包。 1.可以去官方网站链接: https://downloads.mysql.com/archives/community/ ,下载mysql-5.7.24-linux-glibc2.12-x86_64.tar压缩包。 2.在线下载,使用wget命令,直接从官网下载…...
【容器】k8s学习笔记原理详解(十万字超详细)
Pod详解 Pod介绍 Pod结构 每个Pod中都可以包含一个或者多个容器,这些容器可以分为两类: 用户程序所在的容器,数量可多可少Pause容器,这是每个Pod都会有的一个根容器,它的作用有两个: 可以以它为依据&am…...
.NET重点
B/S C/S B/S: 浏览器端:JavaScript,HTML,CSS 服务器端:ASP(.NET)PHP/JSP 优势:维护方便,易于升级和扩展 劣势:服务器负担沉重 C/S java/.NET/VC系列 …...
SMMU软件指南SMMU编程之虚拟机结构和缓存
安全之安全(security)博客目录导读 目录 一、虚拟机结构(VMS) 二、缓存 一、虚拟机结构(VMS) 虚拟机结构(VMS)是SMMU中的概念,是一个由STE.VMSPtr字段指向的结构,包含每个虚拟机的配置设置。在相同安全状态下具有相同虚拟机ID(VMID)的多个STE必须指向相同的VMS。…...
Go 语言并发实战:利用协程处理多个接口进行数据融合
高效地处理多个数据源并将其整合为有意义的结果是开发中一项重要的任务。Go 语言,以其强大的并发特性,为我们提供了优雅而高效的解决方案。那么我们探讨一下如何利用 Go 语言的协程,同时调用多个接口获取数据,并将这些数据无缝地合…...
Redis Hash Tag 知识详解
一、Redis Hash Tag概述 Redis Hash Tag是Redis集群环境里用于控制数据分片的关键机制。在Redis集群中,数据依据键的哈希值来确定分片存储位置。Hash Tag能让用户指定键的特定部分作为哈希计算核心部分,进而使相关键存储于同一节点,这对处理…...
在 Ubuntu 上安装 Muduo 网络库的详细指南
在 Ubuntu 上安装 Muduo 网络库的详细指南 首先一份好的安装教程是非常重要的 C muduo网络库知识分享01 - Linux平台下muduo网络库源码编译安装-CSDN博客 像这篇文章就和shit一样,安装到2%一定会卡住,如果你不幸用了这个那真是遭老罪了 环境…...
Golang Gin Redis+Mysql 同步查询更新删除操作(我的小GO笔记)
我的需求是在处理几百上千万数据时避免缓存穿透以及缓存击穿情况出现,并且确保数据库和redis同步,为了方便我查询数据操作加了一些条件精准查询和模糊查询以及全字段模糊查询、分页、排序一些小玩意,redis存储是hash表key值也就是数据ID&…...
nodejs搭配express网站开发后端接口设计需要注意事项
nodejs搭配express网站开发后端接口设计需要注意事项!为了回避一些常见的误区,今天和大家汇总一下,最近我遇到的一些错误信息,虽然都是小问题,但是还是需要分享一下,以免大家再次犯错。 1:第一个…...
mysql 基于chunk机制是如何支持运行期间,动态调整buffer pool大小的
mysql 基于chunk机制是如何支持运行期间,动态调整buffer pool大小的 MySQL 的 InnoDB 存储引擎确实支持在运行期间动态调整缓冲池(buffer pool)的大小,但其机制与自定义缓存系统有所不同。InnoDB 通过内部优化和配置参数来实现这…...
智能客户服务:AI与大数据的革新力量
在当今信息技术日新月异的时代,大数据和人工智能(AI)正逐步成为推动各行各业变革的重要力量。尤其是在客户服务领域,大数据与AI的深度融合正引领着客服系统的全面革新。 一、大数据与AI在智能客服系统中的应用 智能客服系统是一种…...
Python日常使用的自动化脚本
Python日常使用的自动化脚本 LinkDescriptionsort_files根据文件扩展名将目录中的文件组织到子目录中remove_empty_folders删除所有空的文件夹rename_files批量重命名目录中的文件scrape_data从网站上抓取数据download_images从网站批量下载图片count_words统计指定文件中的单…...
AI Agent与Agentic AI:原理、应用、挑战与未来展望
文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例:使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例:使用OpenAI GPT-3进…...
Nginx server_name 配置说明
Nginx 是一个高性能的反向代理和负载均衡服务器,其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机(Virtual Host)。 1. 简介 Nginx 使用 server_name 指令来确定…...
在Ubuntu中设置开机自动运行(sudo)指令的指南
在Ubuntu系统中,有时需要在系统启动时自动执行某些命令,特别是需要 sudo权限的指令。为了实现这一功能,可以使用多种方法,包括编写Systemd服务、配置 rc.local文件或使用 cron任务计划。本文将详细介绍这些方法,并提供…...
3403. 从盒子中找出字典序最大的字符串 I
3403. 从盒子中找出字典序最大的字符串 I 题目链接:3403. 从盒子中找出字典序最大的字符串 I 代码如下: class Solution { public:string answerString(string word, int numFriends) {if (numFriends 1) {return word;}string res;for (int i 0;i &…...
【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分
一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计,提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合:各模块职责清晰,便于独立开发…...
GC1808高性能24位立体声音频ADC芯片解析
1. 芯片概述 GC1808是一款24位立体声音频模数转换器(ADC),支持8kHz~96kHz采样率,集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器,适用于高保真音频采集场景。 2. 核心特性 高精度:24位分辨率,…...
R语言速释制剂QBD解决方案之三
本文是《Quality by Design for ANDAs: An Example for Immediate-Release Dosage Forms》第一个处方的R语言解决方案。 第一个处方研究评估原料药粒径分布、MCC/Lactose比例、崩解剂用量对制剂CQAs的影响。 第二处方研究用于理解颗粒外加硬脂酸镁和滑石粉对片剂质量和可生产…...
Linux 内存管理实战精讲:核心原理与面试常考点全解析
Linux 内存管理实战精讲:核心原理与面试常考点全解析 Linux 内核内存管理是系统设计中最复杂但也最核心的模块之一。它不仅支撑着虚拟内存机制、物理内存分配、进程隔离与资源复用,还直接决定系统运行的性能与稳定性。无论你是嵌入式开发者、内核调试工…...
Linux 中如何提取压缩文件 ?
Linux 是一种流行的开源操作系统,它提供了许多工具来管理、压缩和解压缩文件。压缩文件有助于节省存储空间,使数据传输更快。本指南将向您展示如何在 Linux 中提取不同类型的压缩文件。 1. Unpacking ZIP Files ZIP 文件是非常常见的,要在 …...
纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join
纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join 1、依赖1.1、依赖版本1.2、pom.xml 2、代码2.1、SqlSession 构造器2.2、MybatisPlus代码生成器2.3、获取 config.yml 配置2.3.1、config.yml2.3.2、项目配置类 2.4、ftl 模板2.4.1、…...
