码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 【Git】git 分支或指定文件回退到指定版本


    目录

    一、分支回滚

    1. 使用 git reset 命令

    2.使用 git revert 命令 

     3.使用 git checkout 命令

     二、某个文件回滚

    1.查看哪些文件发生修改

    2.然后查看提交记录(最近几次提交)

    3.执行提交命令


    一、分支回滚

    1. 使用 git reset 命令

    命令可以将当前分支的 HEAD 指针指向指定的提交,从而回退代码到指定版本。
    该命令有三种模式:–soft、–mixed 和 --hard。它们的区别在于回退代码的程度不同。

    • --mixed (默认):将 HEAD 指针和暂存区都回退到指定提交,但不改变工作区的内容。
    • --soft 仅将 HEAD 指针回退到指定提交,不改变暂存区和工作区的内容。
    • --hard 将 HEAD 指针、暂存区和工作区都回退到指定提交,会丢失最新的代码修改,慎用。
    1. # 查看提交历史
    2. git log
    3. # 回退到指定提交(使用 --soft 模式)
    4. git reset --soft
    5. # 查看状态,确认回退操作是否正确
    6. git status
    7. # 提交回退后的代码
    8. git commit -m "回退到 "
    9. # 将修改的代码推送到远程仓库
    10. git push origin

    2.使用 git revert 命令 

    git revert 命令可以将指定提交的修改反向应用到当前分支上,相当于撤销指定提交的修改。
    这种方式比使用 git reset 命令更加安全,因为它不会改变提交历史,而是创建一个新的提交来撤销之前的修改。

    1. # 查看提交历史
    2. git log
    3. # 撤销指定提交,这样会创建一个新的提交来撤销之前的修改
    4. git revert
    5. # 提交撤销操作
    6. git commit -m "回退到版本 "
    7. # 推送到远程仓库
    8. git push origin

     3.使用 git checkout 命令

    git checkout 命令可以将当前分支的 HEAD 指针指向指定的提交,并将工作区的内容替换成指定提交的内容。这种方式不改变提交历史,但会直接覆盖工作区的内容,慎用。

    1. # 查看提交历史
    2. git log
    3. # 切换到指定提交
    4. git checkout <commit>
    5. # 提交回退后的代码
    6. git commit -m "回退到版本 "
    7. # 切回到原来的分支
    8. git checkout <branch>
    9. # 推送当前分支到远程仓库
    10. git push origin <branch>
    11. #<branch> 表示当前分支的名称,例如 master。这个命令会将本地分支的提交推送到远程仓库,并将远程分支更新为与本地分支一致。

     二、某个文件回滚

    如果某次改动比较大,牵涉到的文件比较多。但是某个文件本来是没问题的,结果画蛇添足,改出问题来了,这时候直接回退版本会把所有代码都回退掉,可能得不偿失。这时候就需要指定回退单个文件到为修改之前的版本。

    1.查看哪些文件发生修改

    首先先获取需要回退的文件路径,比较简单的方法就是,在该文件加个细微改动,比如一条无关注释,然后通过git status  可以看到当前分支下修改的文件信息

    git status 

    查看文件内容变化

    1. git diff commitId1 commitId2
    2. 或
    3. git diff commitid 本地文件

    2.然后查看提交记录(最近几次提交)

    git log -2

    commit 3f290fa303e1aceea63e215a7ec68a5381eb8034 (HEAD -> main, origin/main)
    Author: ning
    Date:   Thu Sep 21 16:39:35 2023 +0800

        test buffer

    commit 9bec77097394b5dcba39d79da7c6ea7ed73474f1
    Author: ning
    Date:   Thu Sep 21 16:36:26 2023 +0800

        test buffer

    这里有两个参数需要记录下来

    •  需要回退的文件路径:/source/code/test.java (git status 命令可以看到)
    •  需要回退到哪的 commit ID:3f290fa303e1aceea63e215a7ec68a5381eb8034

    3.执行提交命令

    • 执行 git checkout commitID 回滚文件路径
    1. ➜ git:(test) git checkout 3f290fa303e1aceea63e215a7ec68a5381eb8034 /source/code/test.java
    2. Updated 1 path from 3f290fa30

    此时代码就会还原到登录功能大改之前,如果不需要做啥修改,直接可以commit。

  • 相关阅读:
    工业智能网关BL110应用之六十: 实现西门子S7-200SMART PLC接入Modbus TCP Server云平台
    闲鱼的商品结构化是如何演进的
    九)Stable Diffussion使用教程:ControlNet
    【UN-JS-工具类】懒加载的实现 -- 两种方式 --- 一种5行JS实现懒加载
    qt+opengl 着色器VAO、VBO、EBO(四)
    Android问题笔记四十五:解决SeekBar操作thumb周围产生的圆形阴影/灰色阴影/白色圆圈的解决办法
    【coocs creator】Objective-C 执行 JS 代码,传递json数据
    leetcode解题思路分析(一百四十九)1297 - 1304 题
    今天刚下jdk11和netbeans12,在打开github的一个文件的时候没有任何反应,我看别人是可以打开的
    SpringBoot 日志
  • 原文地址:https://blog.csdn.net/smallbirdnq/article/details/133147822
  • 最新文章
  • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
    用 Hashids 优雅解决 C 端自增 ID 暴露问题
    V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
    LLVM Pass快速入门(四):代码插桩
    milkup:桌面端 markdown AI续写和即时渲染
    基于项目工程构建SBOM(软件物料清单)的研究
    鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
    .NET 中如何快速实现 List 集合去重?
    扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
    浅谈数据访问层
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号