博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
git的版本回退探索
阅读量:7017 次
发布时间:2019-06-28

本文共 1453 字,大约阅读时间需要 4 分钟。

简介

今天改完代码匆忙提交,上线发现有问题,那怎么办?废话,赶紧回滚,那怎么回滚,开始用git reset [--soft | --mixed | --hard 命令,但这命令真的能达到我预期的效果吗? 每个参数后面的意思又是什么?让人一头雾水,然后用了 reset  --hard命令,并没有达到预期的效果。现在总结下

1、git相关术语

  • HEAD

这是当前分支版本顶端的别名,也就是在当前分支你最近的一个提交

  • Index

index也被称为staging area,是指一整套即将被下一个提交的文件集合。他也是将成为HEAD的父亲的那个commit

  • Working Area

   working Area代表你正在工作的那个文件集

1、没有push

这种情况发生在你的本地代码仓库,可能你add ,commit 以后发现代码有点问题,准备取消提交,用到下面命令

resetgit reset [--soft | --mixed | --hard

  # --soft # 只还原 HEAD

  # --mixed # 还原 HEAD、Index # 默认参数
  # --hard # 还原 HEAD、Index、Working Directory

2、已经push

git revert HEAD                  #撤销前一次 commitgit revert HEAD^                 #撤销前前一次 commitgit revert commitId              #(比如:fa042ce57ebbe5bb9c8db709f719cec2c58ee7ff)撤销指定的版本,撤销也会作为一次提交进行保存。

git revert是提交一个新的版本,将需要revert的版本的内容再反向修改回去,

版本会递增,不影响之前提交的内容

git revert 撤销 某次操作,此次操作之前和之后的commit和history都会保留,并且把这次撤销

作为一次最新的提交

2.1、example

假设按时间顺序依次有commit1, commit2, commit3,commit4,对应有version1, version2, version3, version4四个状态。现在你push了version4线上有问题,想要回退到version3状态,只需要 执行

git revert HEAD

注意:这样线上的代码还是不会变,但是本地的代码状态回到了 version3,你再commit5,push到线上,这样线上的代码就跟version3一样了。

 3、reset和revert对比

  看到这里细心的读者会觉得,为什么push之后,reset就不能回滚,git reset --hard commitId也能改变本地工作区,再commit,和push一次,线上的代码不就改变了吗?博主自测的情况是不行。

你用git reset --hard commitId 本地的代码虽然回退了,跟线上代码不同了,但是local Changes并没出现跟线上代码不同的文件,这时候在terminal中,用命令提交,如下:

一样是失败,提示你在push 之前,先git pull ,但是你 git  pull,线下错误代码又恢复了,所以push之后的想回滚,用git revert

 

参考:http://blog.csdn.net/secretx/article/details/51461972

 

你可能感兴趣的文章
iOS开发之 Method Swizzling 深入浅出
查看>>
[实战验证] http缓存(无代理服务器)
查看>>
百万开发师讲解:iOS性能优化
查看>>
一个前端小白的成长之路 前端系列---项目搭建
查看>>
linux常用命令
查看>>
简单的聊聊索引的那些事儿
查看>>
大快搜索数据爬虫技术实例安装教学
查看>>
docker的volume持久化操作
查看>>
搭建自己的 Git 服务器
查看>>
【数据结构-----队列】
查看>>
你的网站还没用上 HTTPS 吗
查看>>
大型重构实践-多国家部署 spring 配置文件
查看>>
寻找技术大神
查看>>
开源大数据周刊-第8期
查看>>
肖磊:不了解人类货币史,就别拿数字货币乱吹牛
查看>>
记录我杭州 Android 面试的经历 | 掘金技术征文
查看>>
Flink在唯品会的实践
查看>>
SSM框架controller中遇到java.lang.NullPointerException
查看>>
开发者日报 2019年04月01日
查看>>
Linux常用命令
查看>>