【Git】回滚旧提交版本且不影响最新提交版本

git版本回滚/回退/前进,版本进退,找回历史版本 git reset --hard HEAD 切换到HEAD指针指向的版本 git reset --hard HEAD^ 回退到上一commit版本,可以一直回退 git reset --hard HEAD~3 回退3个版本 无论你现在的work tree是否为clean,回退3个版本都是可以从3回退到ad(3也就是HEAD为当前版本) git reset --hard 4d8836c06b 回退到4d8836c06b版本 git reset --hard c501d1a461 当然,也可以前进到c501. 阅读详情
AI摘要

本文详细介绍了如何在Git中回滚到旧提交版本,同时保持最新提交不受影响,通过创建新分支、切换版本和推送操作,确保代码管理和版本控制的灵活性。

【Git】回滚旧提交版本且不影响最新提交版本

一、场景假设

远程仓库origin中有一个分支main,有4次提交记录:v1、v2、v3、v4。

二、需求

需要回滚旧提交版本,但不影响已有的所有提交版本(即不影响最新提交版本),以便需要时可以重新回滚到最新提交版本。

如:现在想要回到版本v3,在v3上更新。之后可能回滚到最新版本v4。

三、基本思路

1、基于想要回滚的版本的commit号,创建【新分支】

(1)找到需要回滚的版本的commit号。

  • 方法一:使用git log查找。

    下图所示为v3的提交日志,commit后面的一长串字符即为commit号。

    在这里插入图片描述

  • 方法二(github仓库):在github仓库的commit历史中查找。

    点击下图所示的commits按钮,即可看到该分支下所有历史提交记录。
    在这里插入图片描述
    如下图所示,每条历史提交记录的右侧有一个复制按钮,点击即可复制该提交记录的commit号。
    在这里插入图片描述

(2)基于commit号在本地创建新分支。

使用如下命令:

git branch <new_branch_name> <commit_number>

假设创建新分支的名字是dev,回滚到v3,那么使用的命令就是:git branch dev f10c246f23c90c813813bc989e9feb2e4523ec9(这一长串就是前面找到的v3的commit号)。

注意:

git branch <new_branch_name>

这个命令只在本地创建分支,远程仓库(比如github)上面还不会显示有dev这个分支。

(3)将本地创建的此新分支推送到远程仓库。

将本地创建的新分支推送到远程仓库后,远程仓库才会显示此新分支。使用如下命令:

git push <remote> <new_branch_name>

假设需要将新分支dev推送到远程仓库origin(origin一般是远程仓库的别名),那么使用的命令就是:git push origin dev。

2、切换到【新分支】,如后续有更新,所做的更新都推送到【该分支】

(1)切换到新分支

切换分支默认是切换到该分支的最新版本,即在前面的示例中,切换到分支dev即相当于回滚到了v3版本。

因为前面只是创建了分支,但是并没有跟踪该分支,因此要想在该分支上更新,还需要切换到该分支。

使用如下命令:

git checkout <target_branch_name>

假设要回滚到v3、在v3基础上进行更新,那就切换到以v3为最新版本的分支dev,即使用命令:git checkout dev。

(2)如后续有更新,将更新推送到该分支

git add .
git commit -m '<your comment>' 
git push <remote> <target_branch_name> 

第一行命令表示将所有更新过的文件加入到暂存区,以便后续提交;

第二行命令的是对更新内容的备注;

第三行命令的具体示例:按照前面的案例,为git push origin dev。

3、当需要回到先前的最新版本时,切换回【拥有该最新版本的分支】,如后续基于最新版本有更新,所做的更新都推送到【该分支】

(1)切换到拥有最新版本的分支

默认切换到该分支的最新commit版本。

git checkout <target_branch_name>

按照前面的案例,为git checkout main。

(2)如后续有更新,将更新推送到分支

git add .
git commit -m '<your comment>'
git push <remote> <target_branch_name>

第一行命令表示将所有更新过的文件加入到暂存区,以便后续提交;

第二行命令的是对更新内容的备注;

第三行命令的具体示例:按照前面的案例,为git push origin main。

其他情况

假设切换到分支中的非最新版本号,切换版本后会提示“您正处于分离头指针状态”。如果在这非最新版本上进行修改后,直接进行以下命令并不会将更新提交到dev。

git add .
git commit -m '<your comment>' 执行此命令后会看到有此更新的版本号,如:[分离头指针 560e268] revise v2.
git push <your remote> <your branch> 如:git push origin dev

但是更新的内容会有一个版本号。若想保留更新,可以基于此修改新建一个分支。使用命令与步骤1中的相似。具体而言,假设更新内容的版本号是560e268,可以创建新的分支dev2来保存这个版本的修改。即:git branch dev2 560e268。此时本地就会有dev2分支。要想将此本地分支推送到远程还需要进一步执行git push origin dev2。

push操作可能会有一些网络问题导致不成功,多试几次就好。

四、一些基本命令

  • 查看本地有哪些分支

    git branch
    
  • 查看远程仓库有哪些分支

    git branch -r
    
  • 在本地新建分支(此时远程还没有)

    git branch <new_branch_name>
    

    如:git branch dev

  • 将在本地新建的分支推送到远程

    git push origin <new_branch_name>
    

    如:git push origin dev

  • 切换分支

    git checkout <branch_name>
    

    注:git checkout主要用于切换历史版本、切换分支。

    如:git checkout dev

    一般默认是切换到分支中的最新提交版本。

  • 在本地基于某版本创建分支并切换到该分支

    git checkout -b <new_branch_name> <commit_number>
    

    相当于合并了:git branch <new_branch_name>和git checkout <new_branch_name>。

  • 切换版本号

    git checkout <commit_number>
    

    这里应该是本分支下的版本号才可以进行切换。

  • 删除本地分支

    git branch -d <branch_name>
    

    注意:删除的分支不能是当前所处的分支。

  • 删除远程分支

    删除远程分支之前要先删除本地分支。

    git push origin --delete <branch_name>
    
    这里应该是本分支下的版本号才可以进行切换。
    
  • 删除本地分支

    git branch -d <branch_name>
    

    注意:删除的分支不能是当前所处的分支。

  • 删除远程分支

    删除远程分支之前要先删除本地分支。

    git push origin --delete <branch_name>
    
Git进阶:本地或远程仓库如何回滚到之前的某个commit 在Git的使用过程中,我们经常会遇到需要回滚到之前某个commit的情况。无论是为了修复错误、撤销更改,还是为了重新组织代码,回滚到特定commit都是一个非常有用的技能。本文将介绍几种常用的回滚方法,帮助读者更好地掌握Git版本控制。 阅读详情

相关推荐

git回滚操作系列—浅析

回到本地代码可发现,git pull了之后本地分支的代码没有变化,这是因为线上的分支只是回滚了,但是没有推送到远程分支,只是在线上的本地分支有修改,这个时候需求去线上推送到远程分支。强制覆盖本地文件 与远程仓库保持一致。线上环境推送远程分支。回到本地环境拉取代码。对本地代码库进行回滚。

m0_57781768的博客 1238

git版本回退详解(本地库+远程库)

1、场景 我在本地仓库进行了多次提交,但push到远程库时不希望有这么多提交记录,比如只想要保留最开始的一两条commit记录 2、解决方案 //git reset不加--hard,工作区的内容就不会变化 //此时暂存区和版本库回滚到了指定commit_id的位置 git reset commit_id git add git commit git push ............

风中一匹狼的博客 6985

要将Git仓库的master分支回滚到上一版本

如果你使用的是git reset命令进行回滚,并且想要将更改推送到远程仓库,你需要使用–force(或-f)选项来强制推送更改,因为这会改变分支的历史记录。如果你使用的是git revert命令,则不需要使用–force选项,因为git revert会生成一个新的提交,而不是改变分支的历史记录。如果你使用的是git revert命令,则不需要使用–force选项,因为git revert会生成一个新的提交,而不是改变分支的历史记录。因此,在执行回滚操作后,最好及时通知团队成员,并解释回滚的原因和具体操作。

weixin_43742121的博客 1065

git 的 版本问题,以及idea中使用 git版本回滚操作,以及git版本和idea代码历史记录的区别

git 版本回滚

Chen4852010的博客 1290

HFSS15 win10_64位破解

HFSS15 win10_64位破解 找到的别人的软件,但在首次安装时失败了,并不能patched。寻找了几种方法,已成功安装。在此写下安装经验,供大家参考。 软件安装包以及破解软件: 链接:https://pan.baidu.com/s/1MMjV_31maU5QD6fmI4zfIA 提取码:yj4q 在安装之前,建议关闭杀毒软件。 Step1:进入HFSS150Win64安装包,点击au...

玉笙寒 4万+

手把手教你为ArduPilot添加自定义飞行模式:以自动巡检航线为例

本文详细介绍了如何为开源飞控ArduPilot添加自定义飞行模式,并以自动巡检航线为例,提供了从状态机设计、代码实现到地面站集成的完整开发指南。通过七步法手把手教学,帮助开发者深入理解飞控核心逻辑,实现无人机自主执行复杂巡检任务,满足行业应用定制需求。

weixin_29306875的博客 135

git 提交与回滚

可以看出 master 分支修改了pom.xml,新增了四个文件 -m 提交注释 在代码提交完成之后, 发现出了问题,需要回滚到上一次提交的节点找到最近一次提交,复制提交的信息码,如图: 运行命令 ,就可以成功回退到那个版本...

m0_58893670的博客 9458

使用 MATLAB/Simulink 构建一个电机-液压联合控制系统的仿真模型

本文详细介绍了基于Simulink的电机与液压执行机构联合控制系统建模方法。通过7个步骤,系统讲解了从创建项目、搭建PMSM电机模型、建立逆变器与矢量控制模块,到构建液压泵和执行机构模型的完整过程。重点展示了如何设置关键参数、添加测量反馈模块,并提供了实用的代码片段。教程还包含仿真运行流程、结果分析指标及进阶建议,帮助读者掌握多物理场耦合系统建模的核心技术。该方法适用于机电液一体化系统设计,为工程实践提供有效参考。

amy_mhd的博客 613

git-代码撤销、回滚到任意版本(git回滚命令reset、revert的区别)

文章目录Git 代码撤销、回滚到任意版本(当误提代码到本地或master分支时)git回滚命令reset、revert的区别背景知识方法一:git reset(回退)方法二:git revert(反做) Git 代码撤销、回滚到任意版本(当误提代码到本地或master分支时) [转]Git 代码撤销、回滚到任意版本(当误提代码到本地或master分支时) 参考URL: https://www.cnblogs.com/wangcp-2014/p/11160125.html 情况一: 代码还只在本地,未push

西京刀客 2万+

【信息科学与工程学】【物理/化学科学和工程技术】第八篇 光学07

对于光源-探测器距离 ρ, 稳态漫反射率 R(ρ) ≈ (1/(4π)) [ z₀ (μ_eff + 1/r₁) exp(-μ_eff r₁)/r₁² + (z₀ + 2z_b) (μ_eff + 1/r₂) exp(-μ_eff r₂)/r₂² ], 其中 μ_eff = √(3μ_a(μ_a+μ_s’)), z₀=1/μ_s’, z_b 与边界条件有关。通过测量光纤各点的布里渊频移 ν_B(z) 来得到应变/温度分布:Δν_B(z) = C_ν,ε Δε(z) + C_ν,T ΔT(z)。

weixin_49199313的博客 327

10|Git Diff 与增量代码识别:本次到底改了哪些代码?

本文介绍 Git Diff 和增量代码识别,帮助你理解精准测试如何先找到本次真正变化的代码。测试开发工程师。Java 后端开发工程师。质量平台 / DevOps 平台建设者。想了解精准测试落地方法的技术负责人。

专注 AI 精准测试平台实战落地,分享从代码 Diff 到回归决策的完整工程闭环。主张“先建数据链路,再上 AI 智能”,让测试从“靠经验”走向“基于风险”。 160

Git代码回滚指南:如何优雅地撤销提交与推送

在Git中,代码回滚通常指的是撤销某次或某几次提交,将代码库恢复到之前的状态。本地提交的回滚:撤销本地的提交,通常发生在代码还未推送到远程仓库时。远程仓库推送的回滚:撤销已经推送到远程仓库的提交,通常需要谨慎操作,因为会影响其他开发者的代码。无论是哪种情况,Git都提供了多种方式来实现代码回滚。下面我们将分别介绍这些方法。Git提供了多种方式来实现代码回滚,开发者可以根据具体的需求选择合适的方式。对于本地提交的回滚,git reset和git revert是最常用的命令;对于远程仓库推送的回滚,

私聊前往站内信:https://i.youkuaiyun.com/#/msg/chat/weixin_44976692 3509

RK3568平台YOLOv11模型部署全流程实战:环境搭建、模型转换与性能优化解析

在AI边缘计算领域,瑞芯微RK3568芯片凭借其强大的NPU算力和丰富的接口资源,成为了众多开发者的首选平台。然而,瑞芯微官方文档虽然提供了YOLO11预训练模型的部署方案,但对于需要自定义数据集训练的开发者来说,从模型训练到板端部署的完整流程却缺乏详细指导。本文将带你走完从环境搭建、数据准备、模型训练到最终板端部署的完整技术路线,并分享实际开发中遇到的各种坑点和解决方案。让我们一起探索如何在RK3568平台上实现30FPS稳定推理的YOLO11目标检测应用!

LXY_LOVE36的博客 120

如何使用git命令回滚到指定版本以及返回到新版本

一. 相关git命令 1.git branch:查看当前分支,如果在后面加-a则表示查看所有分支。 2.git log:查看提交历史,在commit id这一项中可以看到提交的历史版本id。 3.git reflog:查看每一次命令的记录 4.git reset --soft:回退到某个版本,只回退了commit的信息。 5.git reset --mixed:为默认方式,不带任何参数的git reset,即时这种方式,它回退到某个版本,只保留源码,回退commit和index信息。 6.git

m0_60935443的博客 5万+

【异常】 OpenClaw 超长入参报错排查与解决方案 [错误]: 400 <400> InternalError.Algo.InvalidParameter: Range of input leng

摘要: OpenClaw服务调用出现400 InvalidParameter报错,核心原因为输入内容长度超出1-129024字符限制。解决方案包括:1)紧急精简冗余入参;2)标准分块处理长文本;3)客户端增加预校验模块;4)长期可申请调整服务规格。该错误属于客户端参数校验异常,通过合理控制输入长度或分批次处理即可解决,重点需保证语义完整性。建议优先采用自动化预校验机制,从源头预防问题发生。(149字)

奶爸的编程之路,也就一周冷个三天 1987

详解git如何回滚提交记录

在Git中,回滚(或撤销)提交记录有不同的方法,具体取决于你想要实现的效果。

境里婆娑 8352

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Git回滚到某次提交

Git中回滚到某次提交

bitcsljl的博客 3328

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Git代码回滚提交分支

Git reset

爬坑之路 3297

git使用——重新提交、回滚或者删除某个提交代码

在 Git 中,重新提交、回滚或删除某个提交是常见的操作,具体方法取决于操作场景(如是否已推送远程、是否需要保留历史等)。

小墨迹的博客 1830

git 回滚到某个版本并删除提交记录

第一步:本地分支还原到某个版本号: git reset --HEAD <commit版本号> 如果本地产生了待提交的文件,进一步执行: git reset --HEAD git reset 第二步:强制推送: git push origin HEAD --force 这样就可以回滚到某个指定版本了,并清空了原来错误的提交记录。不影响后续分支的合并。 ...

会开车的野人的专栏 3888

git:如何做代码回滚

代码回滚的场景:当别人把一些文件上传到服务器,你更新代码之后,出现了本地代码无法运行的情况;产品上线之后,出现了紧急bug,一时无法修复时,为了保证线上稳定,需要做代码回滚。回退的步骤如下:1)查看分支提交历史,确认需要回退的版本 2)进行版本回退 3)推送到远程分支 一个方便的写法: 备注:HEAD是指向当前版本的指针,HEAD^表示上个版本,HEAD^^表示上上个版本。一般回退更多的是到上一个版本。有些时候为了验证Bug,可能在会在测试服务器上打断点调试,如果忘记去掉调试内容,在执行gi

weixin_51225684的博客 4727

Git 回滚代码到指定版本

前言  在我们开发过程中,因各种原因,避免不了将业务代码回滚至指定版本,或者具体一些到某次commit。 下面我们将具体步骤及具体实现做分析。 ##操作前阅读   在代码回归操作过程中主要 围绕 git reset 命令进行,该命令会把版本库和工作目录改变为已知状态。具体来讲,git reset 调整 HEAD 引用指向指定的提交,默认情况下还会更新索引以匹配该提交。根据需要,git reset 命令也可以修改工作目录以呈现指定提交代表的项目修订版本。 git reset 命令有三个主要选项 -

qq_20605113的博客 1万+

git回滚相关命令指南

Git历史查看与回滚操作指南:常用命令包括git log查看历史、git reset回滚本地提交(分--soft/--mixed/--hard三种模式)、git revert撤销远程提交。注意事项:本地回滚可使用reset,远程提交应优先使用revert创建新提交;强制推送(--force)会改写历史需谨慎;操作前建议备份,可用reflog恢复误操作。区分本地与远程提交对团队协作至关重要。

qq_52506743的博客 1035

Git小乌龟(TortoiseGit)的使用以及版本回滚

主要用于小乌龟的基本应用以及如何通过小乌龟来对本地的代码进行版本回滚操作

m0_65520060的博客 9253

AndroidStudio使用Git进行版本回滚

AndroidStudio使用Git进行版本回滚 使用android studio 编写代码错误,有时可能会需要将项目版本回退到以前的某个版本上,这对于很多刚使用git的网友来说操作可能不是很懂,下面为大家整理了android studio 回退已经commit的代码和有使用git提交代码仓库中的程序回退方法。 一、android studio上部VCS > Git > Reset ...

qq_29443203的博客 4245
上一篇: Linux安装MuJoCo各版本及D4RL教程
下一篇: 【DL】FocalLoss的PyTorch实现
Mocode
博客等级 码龄7年 335粉丝 53原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值