代码回滚的场景:当别人把一些文件上传到服务器,你更新代码之后,出现了本地代码无法运行的情况;产品上线之后,出现了紧急bug,一时无法修复时,为了保证线上稳定,需要做代码回滚。

回退的步骤如下:

1)查看分支提交历史,确认需要回退的版本

git log

2)进行版本回退

git reset --hard commid_id

3)推送到远程分支

git push origin

一个方便的写法:

git reset --hard HEAD^

备注:HEAD是指向当前版本的指针,HEAD^表示上个版本,HEAD^^表示上上个版本。一般回退更多的是到上一个版本。

其他:

1)撤销修改 

有些时候为了验证Bug,可能在会在测试服务器上打断点调试,如果忘记去掉调试内容,在执行git pull更新时,Git会提示你提交修改。

此时,如果你不记得修改了哪些,可以用git checkout -- file命令,来清空工作区的修改。

如果要撤销提交到暂存区的文件内容:即执行git add之后,此时步骤如下:

git reser HEAD file     ///撤销提交到暂存区的内容
git checkout -- file    ///撤销修改

2)reset与revert

回滚时使用reset和revert是有区别的。reset是用来回退版本,revert是用来还原某次或某几次提交。

如在master分支,提交历史如下:

42eae13 (HEAD -> master) 第四次修改
97ea0f9 第三次修改
e50b7c2 第二次修改
3a52650 第一次修改

示例1: 如果发现第4次修改有错误,需要回滚到第三次,使用reset,执行

git reset --hard 97ea0f9

此时,Git的提交历史为:


97ea0f9 (HEAD -> master) 第三次修改
e50b7c2 第二次修改
3a52650 第一次修改

使用reset命令,Git会把要回退版本之后提交的修改都删除掉,要从第四次修改回退到第一次修改,那么第2,3,4次的修改都会被删除(并不是物理删除)。

示例2:如果发现第三次修改有错误,想恢复第3次修改,但保留第四次修改,可以使用revert

git revert -n 97ea0f9
git commit -m "恢复第三次修改"

Git的提交历史为:

33b8b30 (HEAD -> master) Revert "恢复第三次修改"
42eae13 第四次修改
97ea0f9 第三次修改
e50b7c2 第二次修改
3a52650 第一次修改

即,Git把第三次修改从提交中还原了,还保留了第四次修改,且产生了新的commit_id

------------------

在实际生产环境中,代码是基于master分支发布到线上的,会有多人进行提交,需要做代码回滚时,如果别人没有最新提交,那么可以直接用reset命令进行版本回退,否则,就可以考虑使用revert命令进行还原修改,不能影响别人的提交。

上面的删除并不是真正的物理删除,因为Git会把分支的每次修改记录保留下列,如有某次的commit,某次的reset等,使用git reflog show 命令,可以查看完整的提交历史。

只要有commid_id,就能恢复任意版本的代码,在各版本之间来回穿梭。

git:如何做代码回滚相关推荐

  1. git命令进行代码回滚

    git命令进行代码回滚 1:回滚到你的目标提交记录 2:在你的项目路径下打开git命令面板 git安装路径,安装过的无需安装:下载地址 使用命令:git reset –hard [commit] 该命 ...

  2. Git学习总结(19)——Git代码回滚总结

    一.Git代码回滚分为两种情况,分别是push前回滚和push后回滚. 二.push前代码回滚 push前代码回滚使用reset命令,形如:git reset [--soft | --mixed | ...

  3. 回滚master代码_Git之master主干代码回滚

    本节概览:通过git revert来实现线主干代码的回滚.如下命令 对于 merge类型的commit对象,还需要"-m"参数 git revert -m 1  commit-id ...

  4. 自动化代码部署、代码回滚、命令执行软件之capistrano

    Hi,本周第一天没什么事,所以就先分享一下我研究自动化代码部署与回滚软件的经验.这个软件有什么用途?主要是解决自动进行代码的部署,避免手动部署时出现错误,节省时间,同时在出现问题的时候,能回滚到之前的 ...

  5. 代码回滚,你真的理解吗?

    什么是代码回滚? 在我正式开始今天的分享前,先给你讲两个核心概念: 1. 包回滚是指,线上运行的系统,从现在的版本回滚到以前稳定的老版本. 2. 代码回滚是指,Git 分支的指针(游标),从指向当前有 ...

  6. linux git 删除分支,git 删除分支和回滚的实例详解

    linux shell 的 git 删除分支和回滚的实例详解 git 删除分支和回滚的实例详解 [git 删除本地分支] git branch -D br [git 删除远程分支] git push ...

  7. 怎么用pycharm更新python_利用PyCharm操作Github(仓库新建、更新,代码回滚)

    Github是目前世界上最流行的代码存储和分享平台,而PyCharm是Python圈中最流行的IDE,它很好地支持了Git操作.本文将会介绍如何利用PyCharm来连接Github,同时演示Githu ...

  8. idea代码回滚_IDEA远程仓库版本回滚

    使用 git 进行项目的版本控制时,肯定会遇到回滚版本的情况,回滚有两种,一种是本地仓库回滚,另外一种是远程仓库回滚.以下详细讲解两种回滚方式,本文主要讲解远程回滚,以及常见使用误区. 本地仓库回滚 ...

  9. 基于存档功能的Jenkins代码回滚

    1.主要流程: 配置通过参数化构建–执行shell–构建后操作使用存档功能–推送构建后的代码–执行目标服务推送脚本–脚本工作包括:推送war包,检查war包是否最新,再按将旧包存另一位置按日期记录,最 ...

最新文章

  1. 新技术、新思维开创公共安全管理新模式
  2. Java程序员的春天!springdocker部署
  3. linux合并vi的两个文件,两个文件的对比查看及合并工具:vimdiff-文件合并
  4. 别光看世界杯 7月还有一场音视频技术盛宴等着你
  5. 什么是真正的高清,你知道吗?
  6. Python 命令行传参
  7. MapReduce高级编程
  8. 给你一个全自动的屏幕适配方案(基于SW方案)二 —— Calces.Screen插件拓展功能升级...
  9. 跟我从零开始学python之一_从零开始学 Python 之运算符
  10. 配置Android应用开发环境
  11. 测试用例设计——软件测试基础
  12. 英语老师唱歌软件测试,小学英语教师课堂用语测试题
  13. 云计算要学python_学习云计算需要哪些基础条件?
  14. cad添加自己线性_CAD2014怎么自定义线型? cad设置线型的方法
  15. 电脑文件数据恢复有哪些方法?电脑怎么恢复已删除的文件数据?
  16. 阿里云上一键安装lnmp或lamp
  17. 网页版天气预报linux,在Linux 命令行下浏览天气预报
  18. linux WordPress安装
  19. [原创]电信网络限制破解
  20. 数据分析1 -- 数据集的获取

热门文章

  1. 栈和队列——构造数组的MaxTree(java实现)
  2. 初级开发和中级,高级的区别_如何从初级开发人员过渡到中级开发人员
  3. 基于RT1052 Aworks使能U盘功能(十九)
  4. DPLL 算法(求解k-SAT问题)详解(C++实现)
  5. 销售宝:软件销售技巧,月入10万销冠的经验
  6. ID 发展新方向:OCR证件技术
  7. Matlab读取pfm文件
  8. day1 - SDK入门
  9. Pedometer class 计步器类
  10. CSS的content属性怎么用?